我正在做一個使用sqlite數據庫的應用程序在我的應用程序中有一個功能,它有一個按鈕「更新數據庫」。如何在android中使用新數據庫文件替換現有的sqlite數據庫文件
當用戶點擊'更新數據庫'按鈕時,我需要使用URL中的新數據庫文件升級舊的數據庫文件。
如何做到這一點。該研究告訴我,我們不能改變一個數據庫,因爲它在.apk文件中。 有沒有解決這個問題的方法。 請幫我一把。 謝謝。
我正在做一個使用sqlite數據庫的應用程序在我的應用程序中有一個功能,它有一個按鈕「更新數據庫」。如何在android中使用新數據庫文件替換現有的sqlite數據庫文件
當用戶點擊'更新數據庫'按鈕時,我需要使用URL中的新數據庫文件升級舊的數據庫文件。
如何做到這一點。該研究告訴我,我們不能改變一個數據庫,因爲它在.apk文件中。 有沒有解決這個問題的方法。 請幫我一把。 謝謝。
在您的應用程序首次啓動時,您應該將您的數據庫複製到外部/內部存儲器中,從apk文件中刪除。 當您需要更新(使用語句或更換整個數據庫)時,您可以在內部/外部存儲器中正常運行。 當您更新您的應用程序(也可能是新的應用程序內有一個新的數據庫)時,首次啓動新應用程序時,應該替換存儲在內部/外部存儲器中的數據庫。
簡單,你可以使用下載管理器下載從URL的數據庫文件,並將文件複製到該路徑
/data/data/<YOUR PACKAGE NAME>/databases/
它會自動update.I使用了這一點,並正在
private void importDatabase(String inputFileName) throws IOException
{
InputStream mInput = new FileInputStream(inputFileName);
String outFileName = YOUR_DB_PATH_HERE;
OutputStream mOutput = new FileOutputStream(outFileName);
byte[] mBuffer = new byte[1024];
int mLength;
while ((mLength = mInput.read(mBuffer))>0)
{
mOutput.write(mBuffer, 0, mLength);
}
mOutput.flush();
mOutput.close();
mInput.close();
}
編輯:
您可能會感激它:
工作就像一個魅力! 其他人的注意事項。我允許使用完全相同的代碼進行修復。畢竟它是一個簡單的拷貝這個文件的功能。 – StarWind0
http://stackoverflow.com/questions/9109438/how-to-use-an-existing-database-with-an-android-application/9109728#9109728 –