如何检查我的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

回到顶部