0

アプリケーションに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

最初のテーブルが削除または作成されても問題はありません。何か案は?

4

1 に答える 1

0

createTableメソッドのコードを変更します。

 db.rawQuery

db.execSQL()
于 2012-03-11T02:40:55.210 に答える