1

私の中でdbHelper

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 

関数1つのテーブルを外部データベースに保存します。

だらか、私

  1. 外部データベースに添付してコピーする
  2. この関数のdbファイルを削除し、外部からコピーします
  3. 外部データベースからdbに復元します。

これは、関数がgetWritableDatabase()に戻るまで機能します

ここで私はこの例外を受け取ります:

java.lang.IllegalStateException: no transaction pending

なにが問題ですか?ありがとうタタ

4

2 に答える 2

3

問題は、onUpgradeメソッド(およびonCreate)がトランザクション内で発生し、最後にトランザクションが成功するように設定して終了することです。

ただし、でトランザクションをすでに終了しているonUpgradeため、このエラーが発生します。

からの関連コードSQLiteOpenHelper

        ...
        if (version != mNewVersion) {
            db.beginTransaction();
            try {
                if (version == 0) {
                    onCreate(db);
                } else {
                    onUpgrade(db, version, mNewVersion);
                }
                db.setVersion(mNewVersion);
                db.setTransactionSuccessful();
            } finally {
                db.endTransaction();
            }
        }
        ...
于 2012-11-20T22:01:06.150 に答える
2

おそらく最初に電話せずに電話をかけSQLiteDatabase.endTransaction()たと思います。コードを見ないとわかりにくいですが ;)onUpgradeSQLiteDatabase.beginTransaction()

于 2012-11-20T21:55:44.680 に答える