我有一个由以下代码创建的 SQL 表:
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + _ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + SUBJECT
+ " TEXT NOT NULL," + TOPIC + " TEXT NOT NULL, "
+ LECTURENUMBER + " TEXT NOT NULL, " + PAGENUMBER
+ " TEXT NOT NULL, " + DATE + " TEXT NOT NULL, " + _DATA
+ " TEXT NOT NULL);");
}
我查询表如下:
String sql = "SELECT " + _ID + "," + SUBJECT + " FROM " + TABLE_NAME
+ " GROUP BY " + SUBJECT + ";";
Cursor cursor = subjects.getReadableDatabase().rawQuery(sql, null);
问题是如果游标为空(即表未存储任何值)我必须启动活动 A,如果游标不为空(即表已填满)则必须启动活动 B。
我找不到可以告诉我表是否为空的方法。我曾尝试使用 Log 如下:
private void showSubjectsOnList() {
String sql = "SELECT " + _ID + "," + SUBJECT + " FROM " + TABLE_NAME
+ " GROUP BY " + SUBJECT + ";";
Cursor cursor = subjects.getReadableDatabase().rawQuery(sql, null);
Log.d("Events",Integer.toString(cursor.getCount()));
if(cursor.isNull(0)!=false){
cursor.close();
subjects.close();
startActivity(new Intent(this,OpenScreen.class));
}
}
但是 LOG 显示 1,如果表是空的……再次显示 1,如果表有 1 个条目……它显示 2,如果表有两个条目等等。
你能建议一些方法来解决我的问题,即根据光标是否为空来启动不同的活动。
原文由 Waneya Iqbal 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何像这样测试光标,然后按照您所说的进行操作:
返回游标中的行数
http://developer.android.com/reference/android/database/Cursor.html#getCount()