カテゴリー:
家計簿アプリ
閲覧数:440 配信日:2013-08-24 16:51
問題
「月」「日」テーブルが作成されない
▼/src/android/style/householdaccount/MainActivity.java
・createTableメソッド
・条件分岐をコメントアウトすると作成される
・なぜ?
public void createTable(){
String[] fileName=intentFileName();
SharedPreferences pref = getSharedPreferences(fileName[0],MODE_WORLD_READABLE|MODE_WORLD_WRITEABLE);//getSharedPreferences()メソッドでSharedPreferences型インスタンスを取得。第一引数は、プリファレンスの名前。第二引数は共有モード、他アプリから読み取りも書込みも可能
int str = pref.getInt(fileName[1], 0);//データ読込。第2引数 … キーの値が存在しないときの初期値とする値
// if(str==0){
String sql = "";
sql += "create table "+"'"+fileName[1]+"'"+" (";
sql += "_id integer primary key";
sql += ",Item text not null";
sql += ",Utiwake text";
sql += ",Kingaku text";
sql += ")";
SQLiteDatabase db=database();
db.execSQL(sql);
// }
Editor e = pref.edit();//Editor型インスタンスを取得
e.putInt(fileName[1], 1);//データ書込。第1引数 … キー名。第2引数 … 値
e.commit();//実際に保存
}
原因判明
・プレファレンスxmlファイルに既に保存されていたから
# cd /data/data/android.style.householdaccount/shared_prefs
cd /data/data/android.style.householdaccount/shared_prefs
# ls
ls
pref.xml
# cat /data/data/android.style.householdaccount/shared_prefs/pref.xml
cat /data/data/android.style.householdaccount/shared_prefs/pref.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<int name="2013-8-20" value="1" />
<int name="2013-8-16" value="1" />
<int name="2013-8-9" value="1" />
<int name="2013-8-8" value="1" />
<int name="2013-8" value="1" />
<int name="2013-8-7" value="1" />
<int name="2013-8-17" value="1" />
<int name="2013-8-1" value="1" />
<int name="2013-8-18" value="1" />
<int name="2013-8-19" value="1" />
</map>
対応
・一旦、プレファレンスxmlファイル後、DB名を新規設定すれば良い
※このプロジェクトでは意図的に「pref.xml」「DBテーブル」を連動させている! テストのため片方だけ削除する場合は要注意!
# rm /data/data/android.style.householdaccount/shared_prefs/pref.xml
rm /data/data/android.style.householdaccount/shared_prefs/pref.xml
・「月」「日」テーブルが無事作成されていることを確認
# sqlite3 test.db15
sqlite3 test.db15
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .table
.table
2013-8 2013-8-20 Date_Table android_metadata