Classes
The following classes are available globally.
-
A Database connection.
You don’t create a database directly. Instead, you use a DatabaseQueue, or a DatabasePool:
See morelet dbQueue = DatabaseQueue(...) // The Database is the `db` in the closure: try dbQueue.write { db in try Player(...).insert(db) }
Declaration
Swift
public final class Database
-
A Collation is a string comparison function used by SQLite.
See moreDeclaration
Swift
public final class DatabaseCollation
-
An SQL function or aggregate.
See moreDeclaration
Swift
public final class DatabaseFunction : Hashable
-
A DatabasePool grants concurrent accesses to an SQLite database.
See moreDeclaration
Swift
public final class DatabasePool : DatabaseWriter
-
A DatabaseQueue serializes access to an SQLite database.
See moreDeclaration
Swift
public final class DatabaseQueue : DatabaseWriter
-
A type-erased DatabaseReader
Instances of AnyDatabaseReader forward their methods to an arbitrary underlying database reader.
See moreDeclaration
Swift
public final class AnyDatabaseReader : DatabaseReader
-
A DatabaseSnapshot sees an unchanging database content, as it existed at the moment it was created.
See DatabasePool.makeSnapshot()
For more information, read about
See moresnapshot isolation
at https://sqlite.org/isolation.htmlDeclaration
Swift
public class DatabaseSnapshot : DatabaseReader
-
A cursor of database values extracted from a single column. For example:
try dbQueue.read { db in let urls: DatabaseValueCursor<URL> = try URL.fetchCursor(db, sql: "SELECT url FROM link") while let url = urls.next() { // URL print(url) } }
Declaration
Swift
public final class DatabaseValueCursor<Value> : Cursor where Value : DatabaseValueConvertible
-
A cursor of optional database values extracted from a single column. For example:
try dbQueue.read { db in let urls: NullableDatabaseValueCursor<URL> = try Optional<URL>.fetchCursor(db, sql: "SELECT url FROM link") while let url = urls.next() { // URL? print(url) } }
Declaration
Swift
public final class NullableDatabaseValueCursor<Value> : Cursor where Value : DatabaseValueConvertible
-
A future database value, returned by the DatabaseWriter.concurrentRead(_:) method.
See morelet futureCount: Future<Int> = try writer.writeWithoutTransaction { db in try Player(...).insert() // Count players concurrently return writer.concurrentRead { db in return try Player.fetchCount() } } let count: Int = try futureCount.wait()
Declaration
Swift
public class DatabaseFuture<Value>
-
A type-erased DatabaseWriter
Instances of AnyDatabaseWriter forward their methods to an arbitrary underlying database writer.
See moreDeclaration
Swift
public final class AnyDatabaseWriter : DatabaseWriter
-
A database row.
See moreDeclaration
Swift
public final class Row: Equatable, Hashable, RandomAccessCollection, ExpressibleByDictionaryLiteral, CustomStringConvertible, CustomDebugStringConvertible
-
A statement represents an SQL query.
It is the base class of UpdateStatement that executes update statements, and SelectStatement that fetches rows.
See moreDeclaration
Swift
public class Statement
-
A subclass of Statement that fetches database rows.
You create SelectStatement with the Database.makeSelectStatement() method:
See moretry dbQueue.read { db in let statement = try db.makeSelectStatement(sql: "SELECT COUNT(*) FROM player WHERE score > ?") let moreThanTwentyCount = try Int.fetchOne(statement, arguments: [20])! let moreThanThirtyCount = try Int.fetchOne(statement, arguments: [30])! }
Declaration
Swift
public final class SelectStatement : Statement
-
A subclass of Statement that executes SQL queries.
You create UpdateStatement with the Database.makeUpdateStatement() method:
See moretry dbQueue.inTransaction { db in let statement = try db.makeUpdateStatement(sql: "INSERT INTO player (name) VALUES (?)") try statement.execute(arguments: ["Arthur"]) try statement.execute(arguments: ["Barbara"]) return .commit }
Declaration
Swift
public final class UpdateStatement : Statement
-
A cursor of database values extracted from a single column. For example:
try dbQueue.read { db in let names: ColumnCursor<String> = try String.fetchCursor(db, sql: "SELECT name FROM player") while let name = names.next() { // String print(name) } }
Declaration
Swift
public final class FastDatabaseValueCursor<Value> : Cursor where Value : DatabaseValueConvertible, Value : StatementColumnConvertible
-
A cursor of optional database values extracted from a single column. For example:
try dbQueue.read { db in let emails: FastNullableDatabaseValueCursor<String> = try Optional<String>.fetchCursor(db, sql: "SELECT email FROM player") while let email = emails.next() { // String? print(email ?? "<NULL>") } }
Declaration
Swift
public final class FastNullableDatabaseValueCursor<Value>: Cursor where Value: DatabaseValueConvertible & StatementColumnConvertible
-
The FTS3TableDefinition class lets you define columns of a FTS3 virtual table.
You don’t create instances of this class. Instead, you use the Database
create(virtualTable:using:)
method:
See moretry db.create(virtualTable: "document", using: FTS3()) { t in // t is FTS3TableDefinition t.column("content") }
Declaration
Swift
public final class FTS3TableDefinition
-
The FTS4TableDefinition class lets you define columns of a FTS4 virtual table.
You don’t create instances of this class. Instead, you use the Database
create(virtualTable:using:)
method:try db.create(virtualTable: "document", using: FTS4()) { t in // t is FTS4TableDefinition t.column("content") }
See https://www.sqlite.org/fts3.html
See moreDeclaration
Swift
public final class FTS4TableDefinition
-
The FTS4ColumnDefinition class lets you refine a column of an FTS4 virtual table.
You get instances of this class when you create an FTS4 table:
try db.create(virtualTable: "document", using: FTS4()) { t in t.column("content") // FTS4ColumnDefinition }
See https://www.sqlite.org/fts3.html
See moreDeclaration
Swift
public final class FTS4ColumnDefinition
-
The FTS5TableDefinition class lets you define columns of a FTS5 virtual table.
You don’t create instances of this class. Instead, you use the Database
create(virtualTable:using:)
method:try db.create(virtualTable: "document", using: FTS5()) { t in // t is FTS5TableDefinition t.column("content") }
See https://www.sqlite.org/fts5.html
See more -
The FTS5ColumnDefinition class lets you refine a column of an FTS5 virtual table.
You get instances of this class when you create an FTS5 table:
try db.create(virtualTable: "document", using: FTS5()) { t in t.column("content") // FTS5ColumnDefinition }
See https://www.sqlite.org/fts5.html
See more
-
Declaration
Swift
public class TableAlias : Hashable
-
The TableDefinition class lets you define table columns and constraints.
You don’t create instances of this class. Instead, you use the Database
create(table:)
method:try db.create(table: "player") { t in // t is TableDefinition t.column(...) }
See https://www.sqlite.org/lang_createtable.html
See moreDeclaration
Swift
public final class TableDefinition
-
The TableAlteration class lets you alter database tables.
You don’t create instances of this class. Instead, you use the Database
alter(table:)
method:try db.alter(table: "player") { t in // t is TableAlteration t.add(column: ...) }
See https://www.sqlite.org/lang_altertable.html
See moreDeclaration
Swift
public final class TableAlteration
-
The ColumnDefinition class lets you refine a table column.
You get instances of this class when you create or alter a database table:
try db.create(table: "player") { t in t.column(...) // ColumnDefinition } try db.alter(table: "player") { t in t.add(column: ...) // ColumnDefinition }
See https://www.sqlite.org/lang_createtable.html and https://www.sqlite.org/lang_altertable.html
See moreDeclaration
Swift
public final class ColumnDefinition
-
A cursor of records. For example:
struct Player : FetchableRecord { ... } try dbQueue.read { db in let players: RecordCursor<Player> = try Player.fetchCursor(db, sql: "SELECT * FROM player") }
Declaration
Swift
public final class RecordCursor<Record> : Cursor where Record : FetchableRecord
-
You use FetchedRecordsController to track changes in the results of an SQLite request.
See https://github.com/groue/GRDB.swift#fetchedrecordscontroller for more information.
See moreDeclaration
Swift
public final class FetchedRecordsController<Record> where Record : FetchableRecord
-
Record is a class that wraps a table row, or the result of any query. It is designed to be subclassed.
See moreDeclaration
Swift
open class Record : FetchableRecord, TableRecord, PersistableRecord