好了,所以我的Android應用程序利用了預先存在的數據庫中,這是我訪問使用從數據庫中該寫入預先存在的SQLite數據庫的Android
http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
現在我沒有問題讀取數據,但我似乎無法補充。問題是數據庫文件從不更新,只有當時運行的數據庫實例。我需要對數據庫所做的更改是永久性的,所以我試圖序列化數據庫實例,但發現它無法完成。我認爲在添加到數據庫實例之後,我需要將其導出到文件中,並用它覆蓋數據庫文件。我不確定我會如何去做,並閱讀了上述網站的每一條評論,並且也經歷了無數帖子。
我可能是錯的,但那是我能想象它完成的唯一方法。
public void addTenantWithoutProperty(String name, String email, String phone){
//This method reads from my database
ArrayList<Tenants> tenants = (ArrayList<Tenants>) getAllTenants();
//Checks data in the database before I try add to it
for(int i = 0;i < tenants.size();i++){
String name;
name = tenants.get(i).getName();
System.out.println(i + " before " + names);
}
//I have also tried adding to it using ContentValues, but it makes no difference
String tenantsql = "INSERT INTO tenants (name, phone, email) VALUES ('" + name + "','"
+ phone + "','" + email + "')";
myDataBase.execSQL(tenantsql);
tenants = (ArrayList<Tenants>) getAllTenants();
//checks data in database after insertion
for(int i = 0;i < tenants.size();i++){
String names;
names = tenants.get(i).getName();
System.out.println(i + " after " + names);
}
}
這就是所謂的點擊一個按鈕,輸出顯示正在添加的數據,但它不會導致數據庫中的永久性改變。我怎樣才能解決這個問題?任何幫助都將不勝感激
編輯:已解決! if語句在createDataBase()中讀取if(!dbExist),更改爲if(dbExist)並正常工作。問題是,即使數據庫存在,它也被我的資產文件夾中的數據庫文件覆蓋。感謝您的答覆,無論
您的數據庫myDataBase是否已使用WRITE權限打開?這個例子似乎是打開一個只讀實例。 – mhradek 2012-07-25 17:52:05
是的,這裏是openDataBase方法中的代碼: myDataBase = SQLiteDatabase.openDatabase(myPath,null,SQLiteDatabase.OPEN_READWRITE); – dunika 2012-07-25 18:16:18
作爲一種解決方法,您是否嘗試過創建自己的數據庫並將數據從所提供的數據複製到您創建的數據庫中? – Tanaki 2012-07-25 18:25:20