diff options
author | Sven Engelhardt <sven@iptools.de> | 2012-03-01 17:52:03 +0100 |
---|---|---|
committer | mattn <mattn.jp@gmail.com> | 2012-03-02 09:06:56 +0900 |
commit | 81a88cec734d2ebe34310f92150b944eb38b0634 (patch) | |
tree | 22d6de2d9610f905eb3057bb4aea7080b2130d90 /sqlite3.go | |
parent | add example of Prepare()/QueryRow(). add db.Close(). close #7 (diff) | |
download | golite-81a88cec734d2ebe34310f92150b944eb38b0634.tar.gz golite-81a88cec734d2ebe34310f92150b944eb38b0634.tar.xz |
database/sql expects io.EOF after all rows have been Next'ed
Return io.EOF, so rows.Next() will automatically call rows.Close()
after all results have been returned.
Diffstat (limited to 'sqlite3.go')
-rw-r--r-- | sqlite3.go | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -19,9 +19,10 @@ _sqlite3_bind_blob(sqlite3_stmt *stmt, int n, void *p, int np) { */ import "C" import ( - "errors" "database/sql" "database/sql/driver" + "errors" + "io" "unsafe" ) @@ -247,6 +248,9 @@ func (rc *SQLiteRows) Columns() []string { func (rc *SQLiteRows) Next(dest []driver.Value) error { rv := C.sqlite3_step(rc.s.s) + if rv == C.SQLITE_DONE { + return io.EOF + } if rv != C.SQLITE_ROW { return errors.New(C.GoString(C.sqlite3_errmsg(rc.s.c.db))) } |