SQLite Android Bindings


Application Programming

Loading the Shared Library

Before using any SQLite related methods or objects, the native SQLite library must be loaded into the application using the following code:


One way to ensure that the shared library is loaded early enough is to add it to a "static" block within the declaration of the application's main Activity class.

If an SQLite related method is invoked before the shared libary is loaded, the application will segfault (crash with no error message or exception).

Using the SQLite Android bindings classes

The classes that make up the built-in Android SQLite interface reside in the "android.database.sqlite" namespace. This interface provides all of the same classes, except within the "org.sqlite.database.sqlite" namespace. This means that to modify an application to use the custom version of SQLite, all that is usually required is to replace all occurrences "android.database.sqlite" within the source code with "org.sqlite.database.sqlite". For example, the following:

  import android.database.sqlite.SQLiteDatabase;

should be replaced with:

  import org.sqlite.database.sqlite.SQLiteDatabase;

As well as replacing all uses of the classes in the android.database.sqlite.* namespace, the application must also be sure to use the following two:


instead of:


Differences From the Built-in SQLite Support

Aside from namespace changes, there are other differences from the stock Android interface that applications need to be aware of:

  1. The SQLiteStatement.simpleQueryForBlobFileDescriptor() API is not available.
  2. The collation sequence "UNICODE" is not available.
  3. The collation sequence "LOCALIZED", which normally changes with the system's current locale, is always equivalent to SQLite's built in collation BINARY.