0
當我嘗試檢查最近表是否爲空時,我得到SQLiteException。我該如何解決這個問題?SQLiteException當我嘗試檢查表是空的
這是我sqlitehelper類:
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
private final static int DATABASE_VERSION = 1;
private final static String DATABASE_NAME = "LyricsFinderDB";
public MySQLiteOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database) {
// SQL statement to create recent table
String CREATE_RECENT_TABLE = "CREATE TABLE recent (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name INTEGER)";
database.execSQL(CREATE_RECENT_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {
database.execSQL("DROP TABLE IF EXISTS recent");
this.onCreate(database);
}
public boolean isRecentTableEmpty() {
SQLiteDatabase database = this.getReadableDatabase();
Cursor cursor = database.rawQuery("SELECT * FROM recent", null);
if(cursor.getCount() > 0) {
cursor.close();
return false;
}
cursor.close();
database.close();
return true;
}
}
在MainActivity我在代碼中使用它,如:
if(mySQLiteOpenHelper.isRecentTableEmpty()) {
//...do something
} else {
//...do something
}
這是我正在運行的應用程序後,得到了異常:
Caused by: android.database.sqlite.SQLiteException: no such table: recent (code 1): , while compiling: SELECT * FROM recent
它引發此行:
Cursor cursor = database.rawQuery("SELECT * FROM recent", null);
我知道該表不存在,但爲什麼?在MainActivity中的onCreate()方法,我創建我的數據庫mySQLiteOpenHelper = new MySQLiteOpenHelper(MainActivity.this); – veinhorn
僅當數據庫不存在時纔會調用onCreate。也許它存在(從以前的代碼測試),但它沒有表格。在這種情況下,它也不是創建的。您可以手動刪除它或提升版本ID,以便強制執行onUpdate調用。 –
謝謝。你是對的。現在它工作正常。 – veinhorn