那麼,我有一個數據庫,它有很多的表。但通常表格是空的。 我想檢查數據庫表是否爲空。 如果表格爲空,程序將填充它。Sqlite檢查表是否爲空
public static long queryNumEntries (SQLiteDatabase db, String table)
我會用它,但它requre API 11
那麼,我有一個數據庫,它有很多的表。但通常表格是空的。 我想檢查數據庫表是否爲空。 如果表格爲空,程序將填充它。Sqlite檢查表是否爲空
public static long queryNumEntries (SQLiteDatabase db, String table)
我會用它,但它requre API 11
可以執行select count(*) from table
並檢查是否count> 0
然後讓別人來填充它。
像
SQLiteDatabase db = table.getWritableDatabase();
String count = "SELECT count(*) FROM table";
Cursor mcursor = db.rawQuery(count, null);
mcursor.moveToFirst();
int icount = mcursor.getInt(0);
if(icount>0)
//leave
else
//populate table
做一個SELECT COUNT
:
boolean empty = true
Cursor cur = db.rawQuery("SELECT COUNT(*) FROM YOURTABLE", null);
if (cur != null && cur.moveToFirst()) {
empty = (cur.getInt (0) == 0);
}
cur.close();
return empty;
這是你如何能做到這 -
if(checkTable("TABLE"))
{
//table exists fill data.
}
方法來檢查表 -
個public static boolean checkTable(String table) {
Cursor cur2 = dbAdapter.rawQuery("select name from sqlite_master where name='"
+ table + "'", null);
if (cur2.getCount() != 0) {
if (!cur2.isClosed())
cur2.close();
return true;
} else {
if (!cur2.isClosed())
cur2.close();
return false;
}
}
最優解
public boolean isMasterEmpty() {
boolean flag;
String quString = "select exists(select 1 from " + TABLE_MASTERS + ");";
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery(quString, null);
cursor.moveToFirst();
int count= cursor.getInt(0);
if (count ==1) {
flag = false;
} else {
flag = true;
}
cursor.close();
db.close();
return flag;
}
我認爲,這個解決方案是更好的:
boolean flag;
DatabaseHelper databaseHelper = new DatabaseHelper(getApplicationContext(), DatabaseHelper.DATABASE_NAME, null, DatabaseHelper.DATABASE_VERSION);
try {
sqLiteDatabase = databaseHelper.getWritableDatabase();
} catch (SQLException ex) {
sqLiteDatabase = databaseHelper.getReadableDatabase();
}
String count = "SELECT * FROM table";
Cursor cursor = sqLiteDatabase.rawQuery(count, null);
if (cursor.moveToFirst()){
flag = false;
} else {
flag = true;
}
cursor.close();
sqLiteDatabase.close();
return flag;
moveToFirst()
檢查表,並返回true
,如果表是空的。標記爲正確的答案 - 使用額外的檢查。
請包括你的答案的解釋。 – xpereta
@xpereta moveToFirst()檢查表並返回true,如果表爲空。 –
@xpereta'moveToFirst()'檢查表並返回'true',如果表爲空。 –
這裏是一個更好的選擇:
public boolean validateIfTableHasData(SQLiteDatabase myDatabase,String tableName){
Cursor c = myDatabase.rawQuery("SELECT * FROM " + tableName,null);
return c.moveToFirst();
}
public boolean isEmpty(String TableName){
SQLiteDatabase database = this.getReadableDatabase();
int NoOfRows = (int) DatabaseUtils.queryNumEntries(database,TableName);
if (NoOfRows == 0){
return true;
}else {
return false;
}
}
的可能重複[我如何檢查,看看我的SQLite表中有數據?](http://stackoverflow.com/questions/ 4397757 /如何我可以看看如果我的sqlite表有數據在它) – nikis