-1

我正在尝试创建一个简单的 android 应用程序,该应用程序使用 SQLiteDatabase(不使用 SQLiteOpenHelper)创建数据库。因此,数据库创建和表创建 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 回答