expo-sqlite
gives your app access to a database that can be queried through a WebSQL-like API. The database is persisted across restarts of your app.Android Device | Android Emulator | iOS Device | iOS Simulator | Web |
---|---|---|---|---|
.db
file you already have, you need to do three things:expo install expo-file-system expo-asset
const { getDefaultConfig } = require('expo/metro-config'); const defaultConfig = getDefaultConfig(__dirname); defaultConfig.resolver.assetExts.push('db'); module.exports = defaultConfig;
async function openDatabase(pathToDatabaseFile: string): Promise<SQLite.WebSQLDatabase> { if (!(await FileSystem.getInfoAsync(FileSystem.documentDirectory + 'SQLite')).exists) { await FileSystem.makeDirectoryAsync(FileSystem.documentDirectory + 'SQLite'); } await FileSystem.downloadAsync( Asset.fromModule(require(pathToDatabaseFile)).uri, FileSystem.documentDirectory + 'SQLite/myDatabaseName.db' ); return SQLite.openDatabase('myDatabaseName.db'); }
Please note that you should use this kind of execution only when it is necessary. For instance, when code is a no-op within transactions (like eg.PRAGMA foreign_keys = ON;
).
const db = SQLite.openDatabase('dbName', version); db.exec([{ sql: 'PRAGMA foreign_keys = ON;', args: [] }], false, () => console.log('Foreign keys turned on') );
→
expo install expo-sqlite
If you're installing this in a bare React Native app, you should also follow these additional installation instructions.
import * as SQLite from 'expo-sqlite';
Type: number
Type: string
Type: number
Type: number
Type: number
Type: number
Type: number
Type: number
Type: number
Type: number
string
) - Name of the database file to open.string
)string
)number
)(db: WebSQLDatabase) => void
)Open a database, creating it if it doesn't exist, and return a Database
object. On disk,
the database will be created under the app's documents directory, i.e.
${FileSystem.documentDirectory}/SQLite/${name}
.
Theversion
,description
andsize
arguments are ignored, but are accepted by the function
for compatibility with the WebSQL specification.
Name | Type | Description |
---|---|---|
args | unknown[] | - |
sql | string | - |
ResultSet
objects are returned through second parameter of the success
callback for the
tx.executeSql()
method on a SQLTransaction
(see above).
Name | Type | Description |
---|---|---|
insertId (optional) | number | The row ID of the row that the SQL statement inserted into the database, if a row was inserted. |
rows | { [column]: any } | - |
rowsAffected | number | The number of rows that were changed by the SQL statement. |
Name | Type | Description |
---|---|---|
error | Error | - |
Name | Type | Description |
---|---|---|
insertId (optional) | number | The row ID of the row that the SQL statement inserted into the database, if a row was inserted. |
rows | SQLResultSetRowList | - |
rowsAffected | number | The number of rows that were changed by the SQL statement. |
SQLTransaction
)SQLResultSet
)SQLTransaction
)SQLError
)SQLTransaction
)Error | null
)(ResultSetError | ResultSet)[]
)Database
objects are returned by calls to SQLite.openDatabase()
. Such an object represents a
connection to a database on your device.
Name | Type | Description |
---|---|---|
version | string | - |
readTransaction() | (callback, errorCallback, successCallback) => void | SQLTransactionCallback )SQLTransactionErrorCallback )() => void )void |
transaction() | (callback, errorCallback, successCallback) => void | SQLTransactionCallback ) - A function representing the transaction to perform. Takes a Transaction
(see below) as its only parameter, on which it can add SQL statements to execute.SQLTransactionErrorCallback ) - Called if an error occurred processing this transaction. Takes a single
parameter describing the error.() => void ) - Called when the transaction has completed executing on the database.void Execute a database transaction. |
Name | Type | Description |
---|---|---|
_array | any[] | The actual array of rows returned by the query. Can be used directly instead of getting rows through rows.item(). |
length | number | The number of rows returned by the query. |
item() | (index) => any | number ) - Index of row to get.any Returns the row with the given index . If there is no such row, returns null . |
A SQLTransaction
object is passed in as a parameter to the callback
parameter for the
db.transaction()
method on a Database
(see above). It allows enqueuing SQL statements to
perform in a database transaction.
Name | Type | Description |
---|---|---|
executeSql() | (sqlStatement, args, callback, errorCallback) => void | string ) - A string containing a database query to execute expressed as SQL. The string
may contain ? placeholders, with values to be substituted listed in the arguments parameter.(string | number)[] ) - An array of values (numbers or strings) to substitute for ? placeholders in the
SQL statement.SQLStatementCallback ) - Called when the query is successfully completed during the transaction. Takes
two parameters: the transaction itself, and a ResultSet object (see below) with the results
of the query.SQLStatementErrorCallback ) - Called if an error occurred executing this particular query in the
transaction. Takes two parameters: the transaction itself, and the error object.void Enqueue a SQL statement to execute in the transaction. Authors are strongly recommended to make use of the ? placeholder feature of the method to avoid against SQL injection attacks, and to
never construct SQL statements on the fly. |
Extends: Database
Name | Type | Description |
---|---|---|
close() | () => void | Returns: void Close the database. |
deleteAsync() | () => Promise<void> | Returns: Promise<void> Delete the database file. |
exec() | (queries, readOnly, callback) => void | Query[] )boolean )SQLiteCallback )void |
Name | Type | Description |
---|---|---|
openDatabase() (optional) | (name, version, displayName, estimatedSize, creationCallback) => Database | string )string )string )number )DatabaseCallback )Database |