How To Download Sqlite Database For Android

It supports all popular major relational database systems MySQL, PostgreSQL, Oracle, DB2, SQL Server, Sybase. Including SQLite. DB Browser for SQLite – is an open-source tool to manage database files compatible with SQLite. In this tutorial, you have learned how to download and install SQLite. May 10, 2016 SQLite database is free open source database available for android mobile devices to store data directly inside android mobile phone applications cache storage. SQLite database works same as MySQL database and also gives us the facility to create tables and help us to perform all types of table related certain tasks like Add records, Edit.

Sqlite
22 Mar 2018CPOL
Demonstrates a method to manipulate SQLite databases located in the asset folder

Introduction

Improve the SQLite file handling performance from Android Asset Resource

Background

  1. Android Asset Handling

Using the code

Generally speaking, if we want to read a SQLite database from an Android asset file we have to copy the asset file to a local folder, then read the database from the local file.

This method has some disadvantages:

  1. wastes disk usage
    if the database file size is a little big
  2. wastes CPU
  3. security vulnerable
    user can replace the local database file after root the device

To overcome these disadvantages we will implment a new SQLite VFS which supports Android asset resource.

SQLite use the unix-vfs on Unix OS and use win32-vfs on Window OS

Android wraps the SQLite code and export some java interface (android.database.sqlite.SQLiteDatabase), but miss some advanced features from the original SQLite implementation

  1. URI file syntax
  2. VFS
Actually Android have already includes the above feature in libsqlite.so, but doesn't supply the Java interface/entrypoint, and according to Android O+ security behavior change, the developer MUST NOT access the libsqlite.so in the latter Android version

Fortunately, the SQLite developers already supply a similar Java wrapper: SQLite Android Bindings, which can supply these features

The class name and members name are mostly identical , so you can import the aar and change your java source import from

to

Steps to use

  1. disable the compress for the SQLiteDatabase file in android asset
    in build.gradle:
  2. implement SQLite VFS and register it
  3. open the database file in asset folder with custome URI

I implement three VFSes for different scenerio

First VFS :android_asset

Java (open SQLiteDatabase with custom SQLite URI):

Native:

Second VFS: asset_fd_map

Java (open SQLiteDatabase with custom SQLite URI):

Native:

Third VFS: asset_fd

Java (open SQLiteDatabase with custom SQLite URI):

Native:

In the demo project, I compare the different methods.

The elapsed time difference seems not too great, probably because the performance bottleneck is the SQLite inner data processing, but not the file handling

  • Android Basics
  • Android - User Interface
  • Android Advanced Concepts
  • Android Useful Examples
  • Android Useful Resources
  • Selected Reading

SQLite is a opensource SQL database that stores data to a text file on a device. Android comes in with built in SQLite database implementation.

SQLite supports all the relational database features. In order to access this database, you don't need to establish any kind of connections for it like JDBC,ODBC e.t.c

Database - Package

The main package is android.database.sqlite that contains the classes to manage your own databases

Database - Creation

In order to create a database you just need to call this method openOrCreateDatabase with your database name and mode as a parameter. It returns an instance of SQLite database which you have to receive in your own object.Its syntax is given below

Apart from this , there are other functions available in the database package , that does this job. They are listed below

Sr.NoMethod & Description
1

openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags, DatabaseErrorHandler errorHandler)

This method only opens the existing database with the appropriate flag mode. The common flags mode could be OPEN_READWRITE OPEN_READONLY

2

openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags)

It is similar to the above method as it also opens the existing database but it does not define any handler to handle the errors of databases

3

openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory)

It not only opens but create the database if it not exists. This method is equivalent to openDatabase method.

4

openOrCreateDatabase(File file, SQLiteDatabase.CursorFactory factory)

This method is similar to above method but it takes the File object as a path rather then a string. It is equivalent to file.getPath()

Database - Insertion

we can create table or insert data into table using execSQL method defined in SQLiteDatabase class. Its syntax is given below

This will insert some values into our table in our database. Another method that also does the same job but take some additional parameter is given below

How to download sqlite database for android phone
Sr.NoMethod & Description
1

execSQL(String sql, Object[] bindArgs)

This method not only insert data , but also used to update or modify already existing data in database using bind arguments

Database - Fetching

We can retrieve anything from database using an object of the Cursor class. We will call a method of this class called rawQuery and it will return a resultset with the cursor pointing to the table. We can move the cursor forward and retrieve the data.

There are other functions available in the Cursor class that allows us to effectively retrieve the data. That includes

Android Database Example

Sr.NoMethod & Description
1

getColumnCount()

This method return the total number of columns of the table.

2

getColumnIndex(String columnName)

This method returns the index number of a column by specifying the name of the column

3

getColumnName(int columnIndex)

This method returns the name of the column by specifying the index of the column

4

getColumnNames()

This method returns the array of all the column names of the table.

5

getCount()

This method returns the total number of rows in the cursor

6

getPosition()

This method returns the current position of the cursor in the table

7

isClosed()

This method returns true if the cursor is closed and return false otherwise

Database - Helper class

For managing all the operations related to the database , an helper class has been given and is called SQLiteOpenHelper. It automatically manages the creation and update of the database. Its syntax is given below

Example

Open Sqlite3 Database

Here is an example demonstrating the use of SQLite Database. It creates a basic contacts applications that allows insertion, deletion and modification of contacts.

To experiment with this example, you need to run this on an actual device on which camera is supported.

StepsDescription
1You will use Android studio to create an Android application under a package com.example.sairamkrishna.myapplication.
2Modify src/MainActivity.java file to get references of all the XML components and populate the contacts on listView.
3Create new src/DBHelper.java that will manage the database work
4Create a new Activity as DisplayContact.java that will display the contact on the screen
5Modify the res/layout/activity_main to add respective XML components
6Modify the res/layout/activity_display_contact.xml to add respective XML components
7Modify the res/values/string.xml to add necessary string components
8Modify the res/menu/display_contact.xml to add necessary menu components
9Create a new menu as res/menu/mainmenu.xml to add the insert contact option
10Run the application and choose a running android device and install the application on it and verify the results.

Following is the content of the modified MainActivity.java.

Following is the modified content of display contact activity DisplayContact.java

Following is the content of Database class DBHelper.java

Following is the content of the res/layout/activity_main.xml

Following is the content of the res/layout/activity_display_contact.xml

Following is the content of the res/value/string.xml

Following is the content of the res/menu/main_menu.xml

Following is the content of the res/menu/display_contact.xml

This is the defualt AndroidManifest.xml of this project

Let's try to run your application. I assume you have connected your actual Android Mobile device with your computer. To run the app from Android studio , open one of your project's activity files and click Run icon from the tool bar. Before starting your application,Android studio will display following window to select an option where you want to run your Android application.

Select your mobile device as an option and then check your mobile device which will display following screen −

Now open your optional menu, it will show as below image: Optional menu appears different places on different versions

How To Download Sqlite Database For Android

Click on the add button of the menu screen to add a new contact. It will display the following screen −

It will display the following fields. Please enter the required information and click on save contact. It will bring you back to main screen.

Now our contact sai has been added.In order to see that where is your database is created. Open your android studio, connect your mobile. Go tools/android/android device monitor. Now browse the file explorer tab. Now browse this folder /data/data/<your.package.name>/databases<database-name>.