さて、私の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);
}
}
これはボタンのクリックで呼び出され、出力にはデータが追加されていることが示されますが、データベースが永続的に変更されることはありません。どうすればこれを回避できますか? どんな助けでも大歓迎です
編集:解決しました!createDataBase() の if ステートメントは、if(!dbExist) を読み取り、if(dbExist) に変更され、正常に動作します。問題は、データベースが存在する場合でも、資産フォルダー内のデータベース ファイルによって上書きされていたことです。にもかかわらず、あなたの応答をありがとう