-1

SQLiteDatabaseを使用して(SQLiteOpenHelperを使用せずに)データベースを作成する単純なAndroidアプリケーションを作成しようとしています。したがって、データベースの作成とテーブルの作成SQLは、問題や例外なしに正常に実行されます。

問題は、同じデータベースを再度開いたときに、以前に作成されたテーブルが存在しないことです。

次のコードを使用して、テーブルの存在を確認しています。

                Cursor cursor = db.rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '"+ sqlQueryString +"'", null);
                if(cursor!=null) {
                    if(cursor.getCount() == 0) {
                        //error handling code here
                    }
                    cursor.close();
                }

明らかに状態で終わっていif(cursor.getCount() == 0)ます。

私はdbファイルをプルし、PCのsqliteビューアで確認しましたが、以前に作成したテーブルは単に存在しません。

だから私の質問は、テーブルの作成クエリがテーブルを正しく作成したことをどのように確認するのですか?


要求された情報の追加:

Create table ExampleTable ( ROWID integer primary key autoincrement , FIRSTNAME text    , LASTNAME text    ) ;

Androidコードを追加して、上記のクエリを実行します。

            db.beginTransaction();
            db.execSQL(sqlQueryString);
            db.endTransaction();
4

1 に答える 1

1

トランザクションを終了する前に呼び出す必要がありdb.setTransactionSuccessful()ます。そうしないと、操作が失敗したと見なされ、トランザクションがロールバックされます。

一般的なトランザクションの使用法は次のとおりです。

db.beginTransaction();
try {
    // execute DB queries here
    db.setTransactionSuccessful();
} finally {
    db.endTransaction();
}

コメントで最初に解決策に言及したのはnjzk2の功績です。

于 2012-12-14T14:13:50.503 に答える