adding your own SQLite database to an android application

后端 未结 1 1283
青春惊慌失措
青春惊慌失措 2020-11-27 17:58

how can we add our own SQLite database to an android project??

相关标签:
1条回答
  • 2020-11-27 18:46

    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();
         }
    
    0 讨论(0)
提交回复
热议问题