2013-07-02 39 views
0

我寫了一個應用程序,記錄數據並通過SQL將其保存到.db文件中。我有一種方法從內存複製到SD卡。Android與從SD卡db文件的工作

現在我寫了第二個應用程序,它需要使用這個特定的.db文件。因爲我認爲,所有應用都不能訪問從其他應用

打包文件(在這種情況下

/data/data/app1_package/databases/my_database.db 

) 我需要以某種方式與我的SD卡DB工作。我怎麼做?

我可以在我的SQLiteHelper類中使用這個路徑嗎?我是否應該將其從SD複製到我的包裹,甚至可能(訪問權限等)?

我是數據庫的初學者,有些幫助會很好。

回答

0

是將數據庫文件在您的資產文件夾,並把它這種方式:

 DB_PATH="/data/data/app1_package/databases/my_database.db" 

你創建:

  is = getAssets().open("Meaniningss.db"); 
      write(is); 

方法:

   public void write(InputStream is) { 
    try { 
     OutputStream out = new FileOutputStream(new File(DB_PATH)); 
     int read = 0; 
     byte[] bytes = new byte[1024]; 

     while ((read = is.read(bytes)) != -1) { 
      out.write(bytes, 0, read); 
     } 
     is.close(); 
     out.flush(); 
     out.close(); 
     System.err.println(out + "\n"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
+0

用戶得到我的第一個應用程序,我獨立地從db文件寫入我的應用程序。 所以我需要一種方式來獲取數據庫文件到我的第二個應用程序後它的設備上。 資產的方式似乎工作,我得到的數據庫文件而我正在寫第二個應用程序。我看到這個對嗎? – Tommy

1

您可以打開任何可讀的文件路徑作爲數據庫:

File dbFile = new File(Environment.getExternalStorageDirectory(), "myfile.db"); 
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbFile,null,null); 

注意:檢查在使用此代碼之前是否安裝了sd卡。

+0

好的,我在我的第一個應用程序中獲得了2個課程。 SQLHelper(它創建數據庫並將其保存在SD上)和SQLDatabase(它執行SQL指令)。 我可以刪除助手類,並使用我所創建的數據庫文件,就像你說的一樣嗎?分別,我甚至需要助手類只讀目的? – Tommy

+0

@Tommy'SQLieHelper'打開數據庫並調用創建/升級方法。如果你可以自己編寫這兩個代碼,那麼是的,你可以在沒有'SQLiteOpenHelper'的情況下工作。 –

+0

你能給我一個提示,我怎麼做到這一點?我在這個數據庫的東西真的很新 – Tommy