我正在尝试创建一个简单的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();
答案 0 :(得分:1)
您需要在结束事务之前调用db.setTransactionSuccessful()
,否则假定操作失败并且事务被回滚。
典型的交易用途是:
db.beginTransaction();
try {
// execute DB queries here
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
感谢njzk2首先在评论中提及解决方案。