Added in API level 1

android.database.sqlite


Contains the SQLite database management classes that an application would use to manage its own private database.

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 APISQLite Version
API 373.50
API 36.13.50
API 353.44
API 343.42
API 343.39
API 333.32
API 323.32
API 313.32
API 303.28
API 283.22
API 273.19
API 263.18
API 243.9
API 213.8
API 113.7
API 83.6
API 33.5
API 13.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