X-Git-Url: http://nitlanguage.org diff --git a/lib/sqlite3/sqlite3.nit b/lib/sqlite3/sqlite3.nit index 6856d9d..5f90801 100644 --- a/lib/sqlite3/sqlite3.nit +++ b/lib/sqlite3/sqlite3.nit @@ -105,14 +105,15 @@ class Sqlite3DB 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 # A prepared Sqlite3 statement, created from `Sqlite3DB::prepare` or `Sqlite3DB::select` class Statement private var native_statement: NativeStatement - private init(ns: NativeStatement) do self.native_statement = ns - # Is this statement usable? var is_open = true @@ -127,17 +128,15 @@ class Statement fun iterator: StatementIterator do native_statement.reset - native_statement.step return new StatementIterator(self) end end +# A row from a `Statement` class StatementRow # Statement linked to `self` var statement: Statement - private init(s: Statement) do self.statement = s - # Number of entries in this row # # require: `self.statement.is_open` @@ -159,16 +158,10 @@ class StatementEntry private var index: Int - private init(s: Statement, i: Int) - do - self.statement = s - self.index = i - end - # Name of the column # # require: `self.statement.is_open` - fun name: String is cached do + var name: String is lazy do assert statement_closed: statement.is_open return statement.native_statement.column_name(index) @@ -228,7 +221,7 @@ class StatementEntry var native_string = statement.native_statement.column_text(index) if native_string.address_is_null then return "" - return native_string.to_s + return native_string.to_s_with_copy end # Get this entry as `Blob` @@ -256,15 +249,15 @@ class StatementIterator # Statement linked to `self` var statement: Statement - private init(s: Statement) + init do - self.statement = s - self.item = new StatementRow(s) + self.item = new StatementRow(statement) + self.is_ok = statement.native_statement.step.is_row end - redef var item: StatementRow + redef var item: StatementRow is noinit - redef var is_ok = true + redef var is_ok is noinit # require: `self.statement.is_open` redef fun next @@ -306,12 +299,9 @@ end class Blob super Sqlite3Data - private init(pointer: Pointer, length: Int) - do - self.pointer = pointer - self.length = length - end - + # Pointer to the beginning of the blob var pointer: Pointer + + # Size of the blob var length: Int end