aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sqlite3.go14
1 files changed, 10 insertions, 4 deletions
diff --git a/sqlite3.go b/sqlite3.go
index 660982d..e9cb790 100644
--- a/sqlite3.go
+++ b/sqlite3.go
@@ -99,7 +99,8 @@ type SQLiteStmt struct {
// Result struct.
type SQLiteResult struct {
- s *SQLiteStmt
+ id int64
+ changes int64
}
// Rows struct.
@@ -295,12 +296,12 @@ func (s *SQLiteStmt) Query(args []driver.Value) (driver.Rows, error) {
// Return last inserted ID.
func (r *SQLiteResult) LastInsertId() (int64, error) {
- return int64(C._sqlite3_last_insert_rowid(r.s.c.db)), nil
+ return r.id, nil
}
// Return how many rows affected.
func (r *SQLiteResult) RowsAffected() (int64, error) {
- return int64(C._sqlite3_changes(r.s.c.db)), nil
+ return r.changes, nil
}
// Execute the statement with arguments. Return result object.
@@ -312,7 +313,12 @@ func (s *SQLiteStmt) Exec(args []driver.Value) (driver.Result, error) {
if rv != C.SQLITE_ROW && rv != C.SQLITE_OK && rv != C.SQLITE_DONE {
return nil, errors.New(C.GoString(C.sqlite3_errmsg(s.c.db)))
}
- return &SQLiteResult{s}, nil
+
+ res := &SQLiteResult{
+ int64(C._sqlite3_last_insert_rowid(s.c.db)),
+ int64(C._sqlite3_changes(s.c.db)),
+ }
+ return res, nil
}
// Close the rows.