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

Getting started with IBM worklight Mobile App In Eclipse using Ionic / Angularjs

Install Eclipse and add IBM MobileFirst Platform Studio 7.1.0 .  You can follow the following steps : Goto Help > > Eclipse Market Place >> and search for IBM MobileFirst Platform Studio 7.1.0 . and u can add and install thet plugin and get started with ionic - angular app development. You can start the new project and so can add your Environment needed and start development. After creating the sample project you can add ionic bundle folder inside your application so that you get all the necessary features of ionic development. Details and other way of installation is explained here  

Spannable String in Android - URL Span ,Clickable Span, Rich-Style Formatting of Textview .....

See more Android Tutorials here....... Faster Loading images in GridViews or ListViews Spannable brings lots of possibility to TextView, includes displaying various appearance of a Text and onClick callbak. The SpannableString class allows you to easily format certain pieces which are called spans of a string, by applying CharacterStyle ie,color, font, ormake it a link . Here is an example where, explained how to use spannable string to give font size, color, linking a text via clickable span and through URL Span and to strike through the text. Lets go through the example : import android.os.Bundle; import android.text.SpannableString; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.text.style.ForegroundColorSpan; import android.text.style.RelativeSizeSpan; import android.text.style.StrikethroughSpan; import android.text.style.URLSpan; import android.view.View; import android.widget.TextView; import android.widget.Toast; ...

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.lengt...