aboutsummaryrefslogtreecommitdiff
path: root/sqlite3.go
diff options
context:
space:
mode:
authorSven Engelhardt <sven@iptools.de>2012-03-01 17:52:03 +0100
committermattn <mattn.jp@gmail.com>2012-03-02 09:06:56 +0900
commit81a88cec734d2ebe34310f92150b944eb38b0634 (patch)
tree22d6de2d9610f905eb3057bb4aea7080b2130d90 /sqlite3.go
parentadd example of Prepare()/QueryRow(). add db.Close(). close #7 (diff)
downloadgolite-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.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/sqlite3.go b/sqlite3.go
index 69aa89f..02e7107 100644
--- a/sqlite3.go
+++ b/sqlite3.go
@@ -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)))
}