编辑,根据下面的答案稍微改变了代码,但仍然没有工作.我还添加了一条日志消息,告诉我getCount是否返回> 0,它是,所以我认为我的查询可能有问题?或者我使用光标..
我已经创建了一个表,我想检查它是否为空,如果它是空的,我想运行一些插入语句(存储在数组中).
下面是我的代码,虽然我没有错误,当我拉出.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());} …Run Code Online (Sandbox Code Playgroud) 如果表格不存在或表格内容为空,我想显示一个警报框。
要检查表是否为空,我正在使用:
cCheckDB = db.rawQuery("SELECT COUNT(*) FROM " + MainActivity.TABLE_NAME +"", null);
if (cCheckDB != null) {
cCheckDB.moveToFirst();
if (cCheckDB.getInt (0) == 0) {
// EMPTY
}
}
Run Code Online (Sandbox Code Playgroud)
但是如何将其包装在“如果表存在”中?什么是最好的方法?
我知道两种检查表是否存在或检查其中是否有内容的方法。但是,如果可能的话,我想以一种有意义的方式而不是在单个查询中使用这些检查——这是我的问题。