Skip to main content

Use Your Own SQLite in ANDROID Application or Using 'SQLite Asset Helper' to read your own databases stored in Asset folder

See more basics on Android along with interview questions

See SQLite tutorial here

If you want to read your own databases in ANDROID APPLICATION, this post may help you.

You may be familiar by creating SQLite in Android use  SQLiteOpenHelper .

Here we are going to deal with using our own databases. 

I have a database named 'mydatabase.sqlite', which consist of a set of name and age of 5 students.

Suppose I want to view the database, I can use SQLite database browser which you can download from here.
                                                  download browser.....

Through this browser we can view the databases, can even modify delete or create a new one.
'mydatabase.sqlite' with name and age of five students is browsed and viewed as shown below



Now  make a zip format of database and copy this database to asset/databases
Also copy 'android-sqlite-asset-helper.jar' into the lib folder.


                                                         download jar.....

Make sure that you copy only zip format to asset folder or else it will not read database.
Now I'am going to load the database contents to a listview. The java source code is given below.

In SqliteAssetHelper.java 


public class SqliteAssetHelper extends ListActivity {

 private Cursor students;
 private MyDatabase db;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  db = new MyDatabase(this);
  students = db.getEmployees(); // you would not typically call this on the main thread

  ListAdapter adapter = new SimpleCursorAdapter(this, 
                  android.R.layout.simple_list_item_2, 
    students,
    new String[] {"name","age"}, //table values 
    new int[] {android.R.id.text1,android.R.id.text2});

  getListView().setAdapter(adapter);
 }

 @Override
 protected void onDestroy() {
  super.onDestroy();
  students.close();
  db.close();
 } }
In MyDatabase.java
public class MyDatabase extends SQLiteAssetHelper {

 private static final String DATABASE_NAME = "mydatabase";
 private static final int DATABASE_VERSION = 2;
 
 public MyDatabase(Context context) {
  super(context, DATABASE_NAME, null, DATABASE_VERSION); 
  }

 public Cursor getEmployees() {

  SQLiteDatabase db = getReadableDatabase();
  SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

  String [] sqlSelect = {"0 _id","name","age"}; 
  String sqlTables = "mytable";

  qb.setTables(sqlTables);
  Cursor c = qb.query(db, sqlSelect, null, null,
    null, null, null);

  c.moveToFirst();
  return c;

 } }

Comments

  1. Thx for the tutorial. However, how do you upgrade the database? My logcat says it requires a script. From github, it says a i need some kind of text file that contains the script [ https://github.com/jgilfelt/android-sqlite-asset-helper/blob/master/samples/database-v2-upgrade/src/main/assets/databases/northwind.db_upgrade_1-2.sql ] .. The problems is, how do i even make the script?

    ReplyDelete
  2. how if I want to store image in database and retrieve it. Which folder I should store mu image file?

    ReplyDelete
  3. How can I retrieve data from the DB? I mean, for example asking the user for an 'age' value, then query on the Database and those that match return their 'name' value.

    ReplyDelete
  4. How about writing on the database? Any thoughts?

    ReplyDelete
  5. which one to use for android? 32bit or 64bit.

    ReplyDelete

Post a Comment

Popular posts from this blog

Passing Images between Activities in Android

in First Activity:
Intent intent=new Intent(FirstClass.this, SecondClass.class); Bundle bundle=new Bundle(); bundle.putInt("image",R.drawable.ic_launcher); intent.putExtras(bundle); startActivity(intent); in Second Acticity:
Bundle bundle=this.getIntent().getExtras(); int pic=bundle.getInt("image"); v.setImageResource(pic);another method:
in First Activity:
Drawable drawable=imgv.getDrawable(); Bitmap bitmap= ((BitmapDrawable)drawable).getBitmap(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); byte[] b = baos.toByteArray(); Intent intent=new Intent(Passimage.this,myclass.class); intent.putExtra("picture", b); startActivity(intent); in Second Acticity:
Bundle extras = getIntent().getExtras(); byte[] b = extras.getByteArray("picture"); Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length); Image…

Get a single record from SQLite in ANDROID

For COMPLETE TUTORIALS see here :
in DATABASE HELPER class: String[] coloumns = new String[] { KEY_ROWID, KEY_NAME, KEY_NICKNAME }; // calling elements in an array Cursor c = db.query(DATABASE_TABLE, coloumns, KEY_ROWID + "=" + l,null, null, null, null); if (c != null) { c.moveToFirst(); String name = c.getString(1); // since name is in position 1 ie second coloumn return name; } return null; in sqlite.java : String s =editinfo.getText().toString(); long l=Long.parseLong(s); DBAdapter adapter=new DBAdapter(SQliteExample.this); adapter.open(); String returnedname=adapter.returnName(l); String returnednickname=adapter.returnickname(l); adapter.close(); editName.setText(returnedname); editNickName.setText(returnednickname);

How To Finish All Previous Activities in ANDROID ?

Some times we may need to close previous all activities before calling an intent, so that the previous activity do not loads on clicking the Android back button.Here is a simple sniffet for it.. Intent intent = new Intent(getApplicationContext(), MainClass.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);