我有一個SQLite數據庫,我想在我的Android應用程序中使用。Android和SQLite,讀取數據庫的設備出錯
首先,我從資產複製我的數據庫/數據/數據//數據庫/使用:
private void copyDBFromAsssetsToDataFolder()
{
try
{
String destPath = "/data/data/" + getPackageName() + "/databases/dbname.db";
File f = new File(destPath);
if(!f.exists())
{
Log.v("TAG","File Not Exist");
InputStream in = getAssets().open("dbname.db");
OutputStream out = new FileOutputStream(destPath);
byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) > 0)
{
out.write(buffer, 0, length);
}
in.close();
out.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
Log.v("TAG","ioexeption");
e.printStackTrace();
}}
我所有的查詢工作正常在模擬器,但在設備中我收到:
錯誤打開目錄:/ data/data/packagename/databases/
這裏,我正在閱讀具有相同問題的人,並且解決方案始終將權限分配給此目錄或將數據庫複製到外部存儲。但在製作過程中,用戶不必擁有SD卡,也不必強制用戶爲數據庫(或其他)目錄分配權限。
使用已創建的數據庫的最佳解決方案是什麼?
爲什麼不使用'File file = Context.getDatabasePath(「name_of_db」);'(而不是硬編碼文件路徑),那麼如果文件不存在'file.mkdirs();'然後複製從資產? – Selvin 2013-04-10 10:48:29
已經提出了類似的問題。有用的閱讀:http://stackoverflow.com/questions/513084/how-to-ship-an-android-application-with-a-database,和http://stackoverflow.com/questions/9109438/how-to-使用-的現有數據庫與 - 的 - Android的應用程序 – 2013-04-10 10:55:25
包已經被寫入,以幫助管理數據庫:https://github.com/jgilfelt/android-sqlite-asset-helper – 2013-04-10 10:56:27