how can we add our own SQLite database to an android project??
            Asked
            
        
        
            Active
            
        
            Viewed 2.6k times
        
    11
            
            
        - 
                    3I normally don't say RTFM, but RTFM: http://developer.android.com/reference/android/database/sqlite/package-summary.html – Brian Driscoll Feb 23 '11 at 04:25
 - 
                    I think he's compiling a list of `how to...` questions. It could have been worse; many people come here asking for you to write code for them, like this site is some sort of free community based app creation tool. – May 26 '11 at 12:20
 - 
                    Go through with this tutroial the best one http://www.codeproject.com/Articles/119293/Using-SQLite-Database-with-Android – Jabbir Basha Nov 15 '12 at 09:56
 - 
                    This will help you to create ,insert ,delete or midify the SQLite Database. http://www.vogella.de/articles/AndroidSQLite/article.html – Himanshu Dudhat May 26 '11 at 12:09
 - 
                    2This example will will interest you [http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/](http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/) – ingsaurabh Feb 23 '11 at 04:42
 
1 Answers
11
            Try this code:
 public class DataBaseHelper extends SQLiteOpenHelper {
     private Context mycontext;
     //private String DB_PATH = mycontext.getApplicationContext().getPackageName()+"/databases/";
     private static String DB_NAME = "(datbasename).sqlite"; //the extension may be .sqlite or .db
     public SQLiteDatabase myDataBase;
     /*private String DB_PATH = "/data/data/"
                             + mycontext.getApplicationContext().getPackageName()
                             + "/databases/";*/
     public DataBaseHelper(Context context) throws IOException {
         super(context, DB_NAME, null, 1);
         this.mycontext = context;
         boolean dbexist = checkdatabase();
         if (dbexist) {
             //System.out.println("Database exists");
             opendatabase();
         } else {
             System.out.println("Database doesn't exist");
             createdatabase();
         }
     }
     public void createdatabase() throws IOException {
         boolean dbexist = checkdatabase();
         if (dbexist) {
             //System.out.println(" Database exists.");
         } else {
             this.getReadableDatabase();
             try {
                 copydatabase();
             } catch (IOException e) {
                 throw new Error("Error copying database");
             }
         }
     }
     private boolean checkdatabase() {
         //SQLiteDatabase checkdb = null;
         boolean checkdb = false;
         try {
             String myPath = DB_PATH + DB_NAME;
             File dbfile = new File(myPath);
             //checkdb = SQLiteDatabase.openDatabase(myPath,null,SQLiteDatabase.OPEN_READWRITE);
             checkdb = dbfile.exists();
         } catch (SQLiteException e) {
             System.out.println("Database doesn't exist");
         }
         return checkdb;
     }
     private void copydatabase() throws IOException {
         //Open your local db as the input stream
         InputStream myinput = mycontext.getAssets().open(DB_NAME);
         // Path to the just created empty db
         String outfilename = DB_PATH + DB_NAME;
         //Open the empty db as the output stream
         OutputStream myoutput = new FileOutputStream("/data/data/(packagename)/databases/(datbasename).sqlite");
         // transfer byte to inputfile to outputfile
         byte[] buffer = new byte[1024];
         int length;
         while ((length = myinput.read(buffer)) > 0) {
             myoutput.write(buffer, 0, length);
         }
         //Close the streams
         myoutput.flush();
         myoutput.close();
         myinput.close();
     }
     public void opendatabase() throws SQLException {
         //Open the database
         String mypath = DB_PATH + DB_NAME;
         myDataBase = SQLiteDatabase.openDatabase(mypath, null, SQLiteDatabase.OPEN_READWRITE);
     }
     public synchronized void close() {
         if (myDataBase != null) {
             myDataBase.close();
         }
         super.close();
     }
        Sergio Tulentsev
        
- 226,338
 - 43
 - 373
 - 367
 
        Jaydeep Khamar
        
- 5,975
 - 3
 - 32
 - 30
 
- 
                    yes Obviously, the code is working on all devices. moreover, I have also used in my application and it just works fine :) – Jaydeep Khamar Mar 01 '12 at 04:33
 - 
                    
 - 
                    1