diff options
author | mattn <mattn.jp@gmail.com> | 2013-09-09 10:56:45 +0900 |
---|---|---|
committer | mattn <mattn.jp@gmail.com> | 2013-09-09 10:56:45 +0900 |
commit | 3f20cb1697bc033aa1eca5d9f0225814e8696006 (patch) | |
tree | 8e88908022070e25958bf1a55b02d758f67d4f8a | |
parent | Remove debug message (diff) | |
download | golite-3f20cb1697bc033aa1eca5d9f0225814e8696006.tar.gz golite-3f20cb1697bc033aa1eca5d9f0225814e8696006.tar.xz |
Implements Queryer
-rw-r--r-- | sqlite3.go | 25 |
1 files changed, 24 insertions, 1 deletions
@@ -137,7 +137,6 @@ func (c *SQLiteConn) AutoCommit() bool { // Implements Execer func (c *SQLiteConn) Exec(query string, args []driver.Value) (driver.Result, error) { for { - println(query) ds, err := c.Prepare(query) if err != nil { return nil, err @@ -158,6 +157,30 @@ 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) { + for { + ds, err := c.Prepare(query) + if err != nil { + return nil, err + } + s := ds.(*SQLiteStmt) + na := s.NumInput() + rows, err := s.Query(args[:na]) + args = args[na:] + s.Close() + if err != nil { + return nil, err + } + if s.t == "" { + return rows, nil + } + rows.Close() + s.Close() + query = s.t + } +} + func (c *SQLiteConn) exec(cmd string) error { pcmd := C.CString(cmd) defer C.free(unsafe.Pointer(pcmd)) |