欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

在Android应用里如何获取并操作现成的SQLite数据库

最编程 2024-07-23 12:11:10
...
  • <span style="font-size:12px;">public class DataBaseHelper extends SQLiteOpenHelper{    
  •      
  •     //The Android's default system path of your application database.    
  •     private static String DB_PATH = "/data/data/YOUR_PACKAGE/databases/";    
  •      
  •     private static String DB_NAME = "myDBName";    
  •      
  •     private SQLiteDatabase myDataBase;     
  •      
  •     private final Context myContext;    
  •      
  •     /**  
  •      * Constructor  
  •      * Takes and keeps a reference of the passed context in order to access to the application assets and resources.  
  •      * @param context  
  •      */    
  •     public DataBaseHelper(Context context) {    
  •      
  •         super(context, DB_NAME, null1);    
  •         this.myContext = context;    
  •     }       
  •      
  •   /**  
  •      * Creates a empty database on the system and rewrites it with your own database.  
  •      * */    
  •     public void createDataBase() throws IOException{    
  •      
  •         boolean dbExist = checkDataBase();    
  •      
  •         if(dbExist){    
  •             //do nothing - database already exist    
  •         }else{    
  •      
  •             //By calling this method and empty database will be created into the default system path    
  •                //of your application so we are gonna be able to overwrite that database with our database.    
  •             this.getReadableDatabase();    
  •      
  •             try {    
  •      
  •                 copyDataBase();    
  •      
  •             } catch (IOException e) {    
  •      
  •                 throw new Error("Error copying database");    
  •      
  •             }    
  •         }    
  •      
  •     }    
  •      
  •     /**  
  •      * Check if the database already exist to avoid re-copying the file each time you open the application.  
  •      * @return true if it exists, false if it doesn't  
  •      */    
  •     private boolean checkDataBase(){    
  •      
  •         SQLiteDatabase checkDB = null;    
  •      
  •         try{    
  •             String myPath = DB_PATH + DB_NAME;    
  •             checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);    
  •      
  •         }catch(SQLiteException e){    
  •      
  •             //database does't exist yet.    
  •      
  •         }    
  •      
  •         if(checkDB != null){    
  •      
  •             checkDB.close();    
  •      
  •         }    
  •      
  •         return checkDB != null ? true : false;    
  •     }    
  •      
  •     /**  
  •      * Copies your database from your local assets-folder to the just created empty database in the  
  •      * system folder, from where it can be accessed and handled.  
  •      * This is done by transfering bytestream.  
  •      * */    
  •     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(outFileName);    
  •      
  •         //transfer bytes from the inputfile to the 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_READONLY);    
  •      
  •     }    
  •      
  •     @Override    
  •     public synchronized void close() {    
  •      
  •             if(myDataBase != null)    
  •                 myDataBase.close();    
  •      
  •             super.close();    
  •      
  •     }    
  • 上一篇: 彻底理解 Dockerfile 的全貌指南

    下一篇: 自动执行SQL? - 实际运用案例解析

  • 推荐阅读