Here, I am posting to how to use existing SQLite database file in android application. follow below steps.
1. Make the SQLite database file.
If you don't have a sqlite manager I recommend you to download the opensource SQLite Database Browser available for Win/Linux/Mac. Make database file.
2. Use this database in your Android application.
Now put your database file in the "assets" folder of your project and create a Database Helper class by extending the SQLiteOpenHelper class
1. Make the SQLite database file.
If you don't have a sqlite manager I recommend you to download the opensource SQLite Database Browser available for Win/Linux/Mac. Make database file.
2. Use this database in your Android application.
Now put your database file in the "assets" folder of your project and create a Database Helper class by extending the SQLiteOpenHelper class
public class Databasehelper extends SQLiteOpenHelper { private SQLiteDatabase myDataBase; private final Context myContext; private static final String DATABASE_NAME = "db.sqlite"; public final static String DATABASE_PATH = ""; public static final int DATABASE_VERSION = 1; //public static final int DATABASE_VERSION_old = 1; //Constructor public Databasehelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); this.myContext = context; DATABASE_PATH = myContext.getDatabasePath(DATABASE_NAME).toString(); } //Create a empty database on the system public void createDatabase() throws IOException { boolean dbExist = checkDataBase(); if(dbExist) { Log.v("DB Exists", "db exists"); // By calling this method here onUpgrade will be called on a // writeable database, but only if the version number has been // bumped //onUpgrade(myDataBase, DATABASE_VERSION_old, DATABASE_VERSION); } boolean dbExist1 = checkDataBase(); if(!dbExist1) { this.getReadableDatabase(); try { this.close(); copyDataBase(); } catch (IOException e) { throw new Error("Error copying database"); } } } //Check database already exist or not private boolean checkDataBase() { boolean checkDB = false; try { String myPath = DATABASE_PATH; File dbfile = new File(myPath); checkDB = dbfile.exists(); } catch(SQLiteException e) { } return checkDB; } //Copies your database from your local assets-folder to the just created empty database in the system folder private void copyDataBase() throws IOException { String outFileName = DATABASE_PATH; OutputStream myOutput = new FileOutputStream(outFileName); InputStream myInput = myContext.getAssets().open(DATABASE_NAME); byte[] buffer = new byte[1024]; int length; while ((length = myInput.read(buffer)) > 0) { myOutput.write(buffer, 0, length); } myInput.close(); myOutput.flush(); myOutput.close(); } //delete database public void db_delete() { File file = new File(DATABASE_PATH); if(file.exists()) { file.delete(); System.out.println("delete database file."); } } //Open database public void openDatabase() throws SQLException { String myPath = DATABASE_PATH; myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE); } public synchronized void closeDataBase()throws SQLException { if(myDataBase != null) myDataBase.close(); super.close(); } public void onCreate(SQLiteDatabase db) { } public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (newVersion > oldVersion) { Log.v("Database Upgrade", "Database version higher than old."); db_delete(); } } //add your public methods for insert, get, delete and update data in database. }
Now you can create a new instance of this DataBaseHelper class and call the createDataBase() and openDataBase() methods.
DataBaseHelper myDbHelper = new DataBaseHelper(); myDbHelper = new DataBaseHelper(this); try { myDbHelper.createDataBase(); } catch (IOException ioe) { throw new Error("Unable to create database"); } try { myDbHelper.openDataBase(); }catch(SQLException sqle){ throw sqle; }
will this code help me update the changes in database and reflect them into my app dynamically??
ReplyDeleteHello Swati Patel,
DeleteDbHelper mDHelper = new DbHelper(context, DB_NAME, null, DB_VERSION)
please pass version when dbhelper is created.
You have to change the structure of your database in onUpgrade method. Not in assets folder.
Reference link : http://stackoverflow.com/questions/6695699/how-to-upgrade-the-android-app-version-one-own-sqlite-database-without-losing-th
Thanks for sharing this great update. It's very helpful.!! recording app
ReplyDeleteThanks for your work.
ReplyDeleteThanks :)
Deletewhen i open my app, this code will execute each time?
ReplyDeleteI have same database and want to use it throughout my application?