// Close closes a database connection and any dangling statements. // (See http://sqlite.org/c3ref/close.html) func (c *Conn) Close() error { if c == nil { return errors.New("nil sqlite database") } if c.db == nil { return nil } c.stmtCache.flush() // Dangling statements stmt := C.sqlite3_next_stmt(c.db, nil) for stmt != nil { if C.sqlite3_stmt_busy(stmt) != 0 { Log(C.SQLITE_MISUSE, "Dangling statement (not reset): \""+C.GoString(C.sqlite3_sql(stmt))+"\"") } else { Log(C.SQLITE_MISUSE, "Dangling statement (not finalize): \""+C.GoString(C.sqlite3_sql(stmt))+"\"") } C.sqlite3_finalize(stmt) stmt = C.sqlite3_next_stmt(c.db, nil) } rv := C.sqlite3_close(c.db) if rv != C.SQLITE_OK { Log(int(rv), "error while closing Conn") return c.error(rv, "Conn.Close") } c.db = nil return nil }
func (c *SQLiteConn) Close() error { s := C.sqlite3_next_stmt(c.db, nil) for s != nil { C.sqlite3_finalize(s) s = C.sqlite3_next_stmt(c.db, nil) } rv := C.sqlite3_close(c.db) if rv != C.SQLITE_OK { return errors.New("sqlite succeeded without returning a database") } c.db = nil return nil }
// Close the connection. func (c *SQLiteConn) Close() error { s := C.sqlite3_next_stmt(c.db, nil) for s != nil { C.sqlite3_finalize(s) s = C.sqlite3_next_stmt(c.db, nil) } rv := C.sqlite3_close(c.db) if rv != C.SQLITE_OK { return errors.New("error while closing sqlite database connection") } c.db = nil return nil }
// Close the connection. func (c *SQLiteConn) Close() error { s := C.sqlite3_next_stmt(c.db, nil) for s != nil { C.sqlite3_finalize(s) s = C.sqlite3_next_stmt(c.db, nil) } rv := C.sqlite3_close(c.db) if rv != C.SQLITE_OK { return ErrNo(rv) } c.db = nil return nil }