Core
-
An SQLite database.
A database supports SQL statement execution, transactions and savepoints, custom collation sequences, and custom SQL functions.
See morelet db = try Database() try db.execute(sql: "create table t1(a);") try db.execute(sql: "insert into t1 default values;") let rowCount: Int = db.prepare(sql: "select count(*) from t1;").front() print("t1 has \(rowCount) rows")Declaration
Swift
public final class Database -
A compiled SQL statement with support for SQL parameter binding and result row processing.
Creation
A statement is not created directly but is obtained from a
Database.let statement = try db.prepare(sql: "select count(*) from t1;")Parameter Binding
A statement supports binding values to SQL parameters by index or by name.
Note
Parameter indexes are 1-based. The leftmost parameter in a statement has index 1.let statement = try db.prepare(sql: "insert into t1(a, b, c, d, e, f) values (?, ?, ?, :d, :e, :f);") try statement.bind(value: 30, toParameter: 3) try statement.bind(value: 40, toParameter: ":d") try statement.bind(parameterValues: 10, 20) try statement.bind(parameters: [":f": 60, ":e": 50])Result Rows
When executed a statement provides zero or more result rows.
try statement.results { row in // Do something with `row` }for row in statement { // Do something with `row` }It is generally preferred to use the block-based method because any errors may be explicitly handled instead of silently discarded.
See moreDeclaration
Swift
public final class Statementextension Statement: Sequenceextension Statement: IteratorProtocol -
A result row containing one or more columns with type-safe value access.
Creation
A row is not created directly but is obtained from a
Statement.try statement.execute() { row in // Do something with `row` }Column Value Access
The database-native column value is expressed by
DatabaseValue, however custom type conversion is possible when a type implements either theColumnConvertibleorDatabaseSerializableprotocol.The value of columns is accessed by the
value(at:)orvalue(named:)methods.let value = try row.value(at: 0) let uuid: UUID = try row.value(named: "session_uuid")It is also possible to iterate over column values:
for row in statement { for value in row { // Do something with `value` } }This allows for simple result row processing at the expense of error handling.
See moreDeclaration
Swift
public struct Rowextension Row: CustomStringConvertibleextension Row: Collection
View on GitHub
Core Reference