diff options
author | mattn <mattn.jp@gmail.com> | 2013-09-09 13:44:24 +0900 |
---|---|---|
committer | mattn <mattn.jp@gmail.com> | 2013-09-09 13:44:24 +0900 |
commit | f595dd99558ac8e2fddbfa35fe84a1557b47191e (patch) | |
tree | c0311b7f9eb7e4e25e8066841bae5325b3344f26 /sqlite3.go | |
parent | Fixes Execer/Queryer (diff) | |
download | golite-f595dd99558ac8e2fddbfa35fe84a1557b47191e.tar.gz golite-f595dd99558ac8e2fddbfa35fe84a1557b47191e.tar.xz |
Fixes Queryer
Diffstat (limited to 'sqlite3.go')
-rw-r--r-- | sqlite3.go | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -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 { |