アプリケーションに2つ目のテーブルを追加しようとしていますが、うまくいきません。2つのテーブルは独自のクラスであり、シングルトンです。onUpgradeメソッドでデータベースの参照を渡し、インスタンス変数として渡します。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
transTable = TransactionTable.getInstance(db);
sysTable = SystemTable.getInstance(db);
onCreate( db );
transTable.updateTable();
sysTable.updateTable();
}
onCreateメソッドは、すべてのテーブルのcreateメソッドを呼び出すだけです。
@Override
public void onCreate(SQLiteDatabase db) {
transTable.createTable();
sysTable.createTable();
}
2番目のテーブルsysTableは、次のcreateステートメントの実行中に例外をスローしません。
public void createTable() {
db.rawQuery("CREATE TABLE IF NOT EXISTS " + tableName + " ("
+ "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + lastUsed
+ " INTEGER, " + balance + " INTEGER, " + accountName
+ " TEXT, UNIQUE ( " + accountName + " ) )", null);
}
しかし、次のような単純なクエリを実行すると、次のようになります。
db.rawQuery("select * from " + tableName, null);
エラーが発生しました
android.database.sqlite.SQLiteException: no such table: system_t: ,
while compiling: select * from system_t
最初のテーブルが削除または作成されても問題はありません。何か案は?