sqlite3 :: Sqlite3DB :: create_table
Create a table on the DB with a statement beginning with "CREATE TABLE ", followed byrest
sqlite3 :: Sqlite3DB :: defaultinit
sqlite3 :: Sqlite3DB :: last_insert_rowid
Returns the id for the last successful insert on the current connection.core :: Object :: class_factory
Implementation used byget_class
to create the specific class.
sqlite3 :: Sqlite3DB :: create_table
Create a table on the DB with a statement beginning with "CREATE TABLE ", followed byrest
core :: Object :: defaultinit
sqlite3 :: Sqlite3DB :: defaultinit
core :: Object :: is_same_instance
Return true ifself
and other
are the same instance (i.e. same identity).
core :: Object :: is_same_serialized
Isself
the same as other
in a serialization context?
core :: Object :: is_same_type
Return true ifself
and other
have the same dynamic type.
sqlite3 :: Sqlite3DB :: last_insert_rowid
Returns the id for the last successful insert on the current connection.core :: Object :: output_class_name
Display class name on stdout (debug only).
# A connection to a Sqlite3 database
class Sqlite3DB
private var native_connection: NativeSqlite3
# Is this connection to the DB open?
var is_open = false
# All `Statement` opened from this connection that must be closed with this connection
private var open_statements = new Array[Statement]
# Open a connection to the database file at `path`
init open(path: Text)
do
init(new NativeSqlite3.open(path.to_cstring))
if native_connection.is_valid then is_open = true
end
# Close this connection to the DB and all open statements
fun close
do
if not is_open then return
is_open = false
# close open statements
for stmt in open_statements do if stmt.is_open then
stmt.close
end
native_connection.close
end
# Prepare and return a `Statement`, return `null` on error
fun prepare(sql: Text): nullable Statement
do
var native_stmt = native_connection.prepare(sql.to_cstring)
if native_stmt.address_is_null then return null
var stmt = new Statement(native_stmt)
open_statements.add stmt
return stmt
end
# Execute the `sql` statement and return `true` on success
fun execute(sql: Text): Bool
do
var err = native_connection.exec(sql.to_cstring)
return err.is_ok
end
# Create a table on the DB with a statement beginning with "CREATE TABLE ", followed by `rest`
#
# This method does not escape special characters.
fun create_table(rest: Text): Bool do return execute("CREATE TABLE " + rest)
# Insert in the DB with a statement beginning with "INSERT ", followed by `rest`
#
# This method does not escape special characters.
fun insert(rest: Text): Bool do return execute("INSERT " + rest)
# Replace in the DB with a statement beginning with "REPLACE", followed by `rest`
#
# This method does not escape special characters.
fun replace(rest: Text): Bool do return execute("REPLACE " + rest)
# Select from the DB with a statement beginning with "SELECT ", followed by `rest`
#
# This method does not escape special characters.
fun select(rest: Text): nullable Statement do return prepare("SELECT " + rest)
# TODO add more prefix here as needed
# The latest error message, or `null` if there is none
fun error: nullable String
do
if not native_connection.is_valid then
var err = sys.sqlite_open_error
if err.is_ok then return null
return err.to_s
end
var err = native_connection.error
if err.is_ok then return null
return err.to_s
end
# Returns the id for the last successful insert on the current connection.
fun last_insert_rowid: Int do return native_connection.last_insert_rowid
end
lib/sqlite3/sqlite3.nit:25,1--113,3