Property definitions

sqlite3 $ NativeSqlite3 :: defaultinit
# A database connection
extern class NativeSqlite3 `{sqlite3 *`}

	# Open a connection to a database in UTF-8
	new open(filename: CString) `{
		sqlite3 *self = NULL;
		int err = sqlite3_open(filename, &self);
		nit_sqlite_open_error = err;
		return self;
	`}

	# Has this DB been correctly opened?
	#
	# To know if it has been closed or interrupted, you must check for errors with `error`.
	fun is_valid: Bool do return not address_is_null

	# Close this connection
	fun close `{
#if SQLITE_VERSION_NUMBER >= 3007014
		sqlite3_close_v2(self);
#else
		// A program using the older version should not rely on the garbage-collector
		// to close its connections. They must be closed manually after the associated
		// prepare statements have been finalized.
		sqlite3_close(self);
#endif
	`}

	# Execute a SQL statement
	fun exec(sql: CString): Sqlite3Code `{
		return sqlite3_exec(self, sql, NULL, NULL, NULL);
	`}

	# Prepare a SQL statement
	fun prepare(sql: CString): NativeStatement `{
		sqlite3_stmt *stmt;
		int res = sqlite3_prepare_v2(self, sql, -1, &stmt, 0);
		if (res == SQLITE_OK)
			return stmt;
		else
			return NULL;
	`}

	fun last_insert_rowid: Int `{
		return sqlite3_last_insert_rowid(self);
	`}

	fun error: Sqlite3Code `{
		return sqlite3_errcode(self);
	`}
end
lib/sqlite3/native_sqlite3.nit:137,1--187,3