TestsTested | ✓ |
LangLanguage | SwiftSwift |
License | MIT |
ReleasedLast Release | Feb 2017 |
SwiftSwift Version | 3.0 |
SPMSupports SPM | ✗ |
Maintained by Øyvind Grimnes.
A lightweight SQLite wrapper written in Swift
Provide the DatabaseQueue
with a file URL. If the database file exists, the existing database file will be used. If not, a new database will be created automatically.
let location = URL(fileURLWithPath: "path/to/database.sqlite")
let databaseQueue = DatabaseQueue(location: location)
All valid SQLite queries are accepted by TinySQLite
To use automatic binding, replace the values in the statement by ’?’, and provide the values in an array
let query = "INSERT INTO YourTable (column, otherColumn) VALUES (?, ?)"
let parameters = [1, "A value"]
To use automatic named binding, replace the values in the statement by ’:<name>’, and provide the values in a dictionary
let query = "INSERT INTO YourTable (column, otherColumn) VALUES (:column, :otherColumn)"
let parameterMapping = [
"column": 1,
"otherColumn": "A value"
]
Execute an update in the database
try databaseQueue.database { (database) in
let statement = try database.statement(for: query)
statement.executeUpdate()
statement.executeUpdate(withParameters: parameters)
statement.executeUpdate(withParameterMapping: parameterMapping)
statement.finalize()
}
Execute a query to the database.
try databaseQueue.database { (database) in
let statement = try database.statement(for:query)
try statement.execute()
for row in statement {
/* Get an integer from the second column in the row */
row.integerForColumn(at: 2)
/* Get a date from the column called 'deadline' */
row.dateForColumn("deadline")
/* Get a dictionary representing the row */
row.dictionary
}
statement.finalize()
}
To improve performance, and prevent partial updates when executing multiple queries, you can use DatabaseQueue
’s transaction
method. If an error is thrown in the block, all changes are rolled back.
try databaseQueue.transaction { (database) in
try database.statement(for: query)
.executeUpdate(withParameters: someParameters)
.executeUpdate(withParameters: someOtherParameters)
.executeUpdate(withParameters: evenMoreParameters)
.finalize()
}
Øyvind Grimnes, [email protected]
TinySQLite is available under the MIT license. See the LICENSE file for more info.