如何检查我的sqlite表中是否包含数据?
我已经创建了一个表,我想检查它是否为空,如果它为空,我想运行一些插入语句(存储在数组中)。
下面是我的代码,虽然我没有错误,但是当我拉出.db文件时,我可以看到它不起作用。您将如何解决这个问题?
public void onCreate(SQLiteDatabase db) { Log.i("DB onCreate", "Creating the database...");//log message
db.execSQL(createCATBUDTAB);
db.execSQL(createTWOWEETAB);
try{
Cursor cur = db.rawQuery("SELECT COUNT(*) FROM CAT_BUD_TAB", null);
if (cur.getCount() > 0){
Log.i("DB getCount", " getcount greater than 0");//log message
//do nothing everything's as it should be
}
else{//put in these insert statements contained in the array
Log.i("DB getCount", " getcount less than 0, should read array");//log message
for(int i=0; i<13; i++){
db.execSQL(catInsertArray[i]);
}
}
}catch(SQLiteException e){System.err.println("Exception @ rawQuery: " + e.getMessage());}
}
抱歉,如果这是一个非常愚蠢的问题或方法,那么我是新手。任何答案非常感谢!
回答:
查询SELECT COUNT(*)
现有表应该 永远不会 返回null。如果表中没有行,它将返回包含零值的一行。
相反,具有非零值的行表示它 不为 空。
在这两种情况下,都应返回一行,这意味着它将始终通过
//do nothing everything's as it should be
部分。
要解决此问题,请将查询保持原样(您不希望这样做,select column_name
因为那是不必要的,可能会导致效率低下)。将其保留为select
count(*),它将始终返回一行,并使用以下代码(仅在我的脑中测试过,因此请小心):
Cursor cur = db.rawQuery("SELECT COUNT(*) FROM CAT_BUD_TAB", null);if (cur != null) {
cur.moveToFirst(); // Always one row returned.
if (cur.getInt (0) == 0) { // Zero count means empty table.
for (int i = 0; i < 13; i++) {
db.execSQL (catInsertArray[i]);
}
}
}
以上是 如何检查我的sqlite表中是否包含数据? 的全部内容, 来源链接: utcz.com/qa/425867.html