在之前做的聯(lián)系人項目中,應用安裝完以后需要顯示數(shù)據(jù)庫中預存的數(shù)據(jù),這時需要導入已有的數(shù)據(jù)庫contact.db,
在Android程序中使用已有的SQLite數(shù)據(jù)庫
。這也是一個面試題,那么如何實現(xiàn)呢?首先在res中新建raw文件夾,res\raw目錄中的文件不會被壓縮,這樣可以直接提取該目錄中的文件。那么如何把raw文件下面的數(shù)據(jù)庫文件contact.db導入到Android程序中的database目錄下呢?
下面提供一個導入現(xiàn)有數(shù)據(jù)庫的工具類:importDatabase
<code class="hljs cs">public void importDatabase() { // 存放數(shù)據(jù)庫的目錄 String dirPath = "/data/data/com.example.contact/databases"; File dir = new File(dirPath); if (!dir.exists()) { dir.mkdir(); } // 數(shù)據(jù)庫文件 File file = new File(dir, "contact.db"); try { if (!file.exists()) { file.createNewFile(); } // 加載需要導入的數(shù)據(jù)庫 InputStream is = this.getApplicationContext().getResources() .openRawResource(R.raw.contact); FileOutputStream fos = new FileOutputStream(file); byte[] buffere = new byte[is.available()]; is.read(buffere); fos.write(buffere); is.close(); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catcriOException e) { e.p`ntStackTrace(); } }</code>
最后在MainActivity的oncreate()方法中調(diào)用importDatabase()方法即可,應用安裝完成后數(shù)據(jù)庫會自動創(chuàng)建,
電腦資料
《在Android程序中使用已有的SQLite數(shù)據(jù)庫》(http://clearvueentertainment.com)。