Android + Sqlite:表创建sql无效

时间:2012-12-14 12:34:30

标签: android database sqlite

我正在尝试创建一个简单的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 viewer,之前创建的表根本不存在。

所以我的问题是如何验证我的create table query是否正确创建了表?


添加所需信息:

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

添加android代码执行上述查询:

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

1 个答案:

答案 0 :(得分:1)

您需要在结束事务之前调用db.setTransactionSuccessful(),否则假定操作失败并且事务被回滚。

典型的交易用途是:

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

感谢njzk2首先在评论中提及解决方案。