aboutsummaryrefslogtreecommitdiff
path: root/sqlite3.go
diff options
context:
space:
mode:
Diffstat (limited to 'sqlite3.go')
-rw-r--r--sqlite3.go13
1 files changed, 8 insertions, 5 deletions
diff --git a/sqlite3.go b/sqlite3.go
index d0f02e3..c5afd1f 100644
--- a/sqlite3.go
+++ b/sqlite3.go
@@ -136,14 +136,13 @@ func (c *SQLiteConn) AutoCommit() bool {
// Implements Execer
func (c *SQLiteConn) Exec(query string, args []driver.Value) (driver.Result, error) {
- var res driver.Result
for {
s, err := c.Prepare(query)
if err != nil {
return nil, err
}
na := s.NumInput()
- res, err = s.Exec(args[:na])
+ res, err := s.Exec(args[:na])
if err != nil && err != driver.ErrSkip {
s.Close()
return nil, err
@@ -160,14 +159,13 @@ func (c *SQLiteConn) Exec(query string, args []driver.Value) (driver.Result, err
// Implements Queryer
func (c *SQLiteConn) Query(query string, args []driver.Value) (driver.Rows, error) {
- var rows driver.Rows
for {
s, err := c.Prepare(query)
if err != nil {
return nil, err
}
na := s.NumInput()
- rows, err = s.Query(args[:na])
+ rows, err := s.Query(args[:na])
if err != nil && err != driver.ErrSkip {
s.Close()
return nil, err
@@ -177,6 +175,7 @@ func (c *SQLiteConn) Query(query string, args []driver.Value) (driver.Rows, erro
if tail == "" {
return rows, nil
}
+ s.Close()
query = tail
}
}
@@ -444,7 +443,11 @@ func (rc *SQLiteRows) Next(dest []driver.Value) error {
return io.EOF
}
if rv != C.SQLITE_ROW {
- return ErrNo(rv)
+ rv = C.sqlite3_reset(rc.s.s)
+ if rv != C.SQLITE_OK {
+ return ErrNo(rv)
+ }
+ return nil
}
if rc.decltype == nil {