@@ -2,7 +2,9 @@ module SQLite
2
2
3
3
using DataFrames
4
4
5
- export sqlitedb, readdlmsql, query, connect, createtable, droptable
5
+ export sqlitedb, readdlmsql, query, createtable, droptable
6
+
7
+ import Base: show
6
8
7
9
include (" SQLite_consts.jl" )
8
10
include (" SQLite_api.jl" )
@@ -69,8 +71,7 @@ function internal_query(conn::SQLiteDB,q::String,finalize::Bool=true,stepped::Bo
69
71
end
70
72
function query (q:: String ,conn:: SQLiteDB = sqlitedb)
71
73
conn == null_SQLiteDB && error (" [sqlite]: A valid SQLiteDB was not specified (and no valid default SQLiteDB exists)" )
72
- stmt, r = SQLite. internal_query (conn,q,false )
73
- r == SQLITE_DONE && return DataFrame (" No Rows Returned" )
74
+ stmt, status = SQLite. internal_query (conn,q,false )
74
75
# get resultset metadata: column count, column types, and column names
75
76
ncols = SQLite. sqlite3_column_count (stmt)
76
77
colnames = Array (UTF8String,ncols)
@@ -93,7 +94,7 @@ function query(q::String,conn::SQLiteDB=sqlitedb)
93
94
end
94
95
end
95
96
# retrieve resultset
96
- while true
97
+ while status != SQLITE_DONE
97
98
for i = 1 : ncols
98
99
t = SQLite. sqlite3_column_type (stmt,i- 1 )
99
100
if t == SQLITE3_TEXT
@@ -107,13 +108,13 @@ function query(q::String,conn::SQLiteDB=sqlitedb)
107
108
end
108
109
push! (resultset[i],r)
109
110
end
110
- sqlite3_step (stmt) == SQLITE_DONE && break
111
+ status = sqlite3_step (stmt)
111
112
end
112
113
# this is for columns we couldn't get the type for earlier (NULL in row 1); should be the exception
113
114
if check != ncols
114
115
nrows = length (resultset[1 ])
115
116
for i = 1 : ncols
116
- if isna (resultset[i][1 ])
117
+ if nrows > 0 && isna (resultset[i][1 ])
117
118
d = resultset[i]
118
119
for j = 2 : nrows
119
120
if ! isna (d[j])
0 commit comments