如何在 SQLiteDatabase 查询中测试光标是否为空

2024-03-11

我有一个由以下代码创建的 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。

我找不到可以告诉我表是否为空的方法。 我尝试使用日志如下:

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));
    }
}

但是如果表为空,则日志显示 1...如果表有 1 个条目,则日志显示 1...如果表有两个条目,则日志显示 2,依此类推。

您能否建议一些方法来解决我根据光标是否为空启动不同活动的问题。


像这样测试光标,然后按照你所说的去做怎么样:

if(cursor!=null && cursor.getCount()>0)

获取计数()

返回游标中的行数

http://developer.android.com/reference/android/database/Cursor.html#getCount() http://developer.android.com/reference/android/database/Cursor.html#getCount()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 SQLiteDatabase 查询中测试光标是否为空 的相关文章

随机推荐