android.database.sqlite
Applications use these classes to manage private databases. If creating a
content provider, you will probably have to use these classes to create and
manage your own database to store content. See Content Providers
to learn the conventions for implementing a content provider. If you are working
with data sent to you by a provider, you do not use these SQLite classes, but
instead use the generic android.database classes.
The Android SDK and Android emulators both include the
sqlite3 command-line
database tool. On your development machine, run the tool from the
platform-tools/ folder of your SDK. On the emulator, run the tool
with adb shell, for example, adb shell sqlite3.
The version of SQLite depends on the version of Android. In the past, SQLite upgrades have been delivered as part of a new API level, but more recently SQLite may be upgraded within an API level (as with API 34). Note that patch-level upgrades (e.g. from 3.44.0 to 3.44.3) are not reported here. If an Android release is not in the table, it uses the version of SQLite from the next-lower Android release that is listed. See the following table:
| Android API | SQLite Version |
|---|---|
| API 36.1 | 3.50 |
| API 35 | 3.44 |
| API 34 | 3.42 |
| API 34 | 3.39 |
| API 33 | 3.32 |
| API 32 | 3.32 |
| API 31 | 3.32 |
| API 30 | 3.28 |
| API 28 | 3.22 |
| API 27 | 3.19 |
| API 26 | 3.18 |
| API 24 | 3.9 |
| API 21 | 3.8 |
| API 11 | 3.7 |
| API 8 | 3.6 |
| API 3 | 3.5 |
| API 1 | 3.4 |
Some device manufacturers include different versions of SQLite on their devices. There are two ways to programmatically determine the version number.
- If available, use the sqlite3 tool, for example:
adb shell sqlite3 --version. - Create and query an in-memory database as shown in the following code sample:
String query = "select sqlite_version() AS sqlite_version"; SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(":memory:", null); Cursor cursor = db.rawQuery(query, null); String sqliteVersion = ""; try { if (cursor.moveToNext()) { sqliteVersion = cursor.getString(0); } } finally { cursor.close(); }
Interfaces
| SQLiteCursorDriver | A driver for SQLiteCursors that is used to create them and gets notified by the cursors it creates on significant events in their lifetimes. |
| SQLiteDatabase.CursorFactory |
Used to allow returning sub-classes of Cursor when calling query.
|
| SQLiteTransactionListener | A listener for transaction events. |
Classes
| SQLiteClosable | An object created from a SQLiteDatabase that can be closed. |
| SQLiteCursor |
A Cursor implementation that exposes results from a query on a
SQLiteDatabase.
|
| SQLiteDatabase | Exposes methods to manage a SQLite database. |
| SQLiteDatabase.OpenParams |
Wrapper for configuration parameters that are used for opening SQLiteDatabase
|
| SQLiteDatabase.OpenParams.Builder |
Builder for OpenParams.
|
| SQLiteOpenHelper | A helper class to manage database creation and version management. |
| SQLiteProgram | A base class for compiled SQLite programs. |
| SQLiteQuery |
Represents a query that reads the resulting rows into a SQLiteQuery.
|
| SQLiteQueryBuilder |
This is a convenience class that helps build SQL queries to be sent to
SQLiteDatabase objects.
|
| SQLiteRawStatement |
A SQLiteRawStatement represents a SQLite prepared statement.
|
| SQLiteStatement | Represents a statement that can be executed against a database. |
Exceptions
| SQLiteAbortException | An exception that indicates that the SQLite program was aborted. |
| SQLiteAccessPermException | This exception class is used when sqlite can't access the database file due to lack of permissions on the file. |
| SQLiteBindOrColumnIndexOutOfRangeException | Thrown if the bind or column parameter index is out of range. |
| SQLiteBlobTooBigException | |
| SQLiteCantOpenDatabaseException | |
| SQLiteConstraintException | An exception that indicates that an integrity constraint was violated. |
| SQLiteDatabaseCorruptException | An exception that indicates that the SQLite database file is corrupt. |
| SQLiteDatabaseLockedException | Thrown if the database engine was unable to acquire the database locks it needs to do its job. |
| SQLiteDatatypeMismatchException | |
| SQLiteDiskIOException | Indicates that an IO error occurred while accessing the SQLite database file. |
| SQLiteDoneException | An exception that indicates that the SQLite program is done. |
| SQLiteException | A SQLite exception that indicates there was an error with SQL parsing or execution. |
| SQLiteFullException | An exception that indicates that the SQLite database is full. |
| SQLiteMisuseException | This error can occur if the application creates a SQLiteStatement object and allows multiple threads in the application use it at the same time. |
| SQLiteOutOfMemoryException | |
| SQLiteReadOnlyDatabaseException | |
| SQLiteTableLockedException |
Interfaces
Classes
Exceptions
- SQLiteAbortException
- SQLiteAccessPermException
- SQLiteBindOrColumnIndexOutOfRangeException
- SQLiteBlobTooBigException
- SQLiteCantOpenDatabaseException
- SQLiteConstraintException
- SQLiteDatabaseCorruptException
- SQLiteDatabaseLockedException
- SQLiteDatatypeMismatchException
- SQLiteDiskIOException
- SQLiteDoneException
- SQLiteException
- SQLiteFullException
- SQLiteMisuseException
- SQLiteOutOfMemoryException
- SQLiteReadOnlyDatabaseException
- SQLiteTableLockedException