1

我正在尝试检查该值是否存在于列中。例如,我想检查该列是否artId包含一些数值。我正在使用以下代码:

getStar = db.query(TABLE_NAME, new String[] { "artId" },
                        "artId = " + entryId, null, null,
                        null, null);
        getStar.moveToFirst();
        String star = getStar.toString();
        Log.w("ID COUNT", star);
        if(getStar != null) {
            // do something
        }

哪里entryId有数字。

但我总是得到这样的东西:

W/ID COUNT(11303): android.database.sqlite.SQLiteCursor@41aa4c80.

我也尝试使用:

getStar = db.rawQuery("SELECT count(*) FROM "
+ TABLE_NAME + " WHERE artId = '" + entryId + "'", null);

但我得到了同样的结果。

所以我希望能得到你的帮助。

4

3 回答 3

5

Cursor是有效的(非null),是的,因为它没有错误。检查它是否有任何数据,而不是。

getStar = db.rawQuery("SELECT count(*) FROM " + TABLE_NAME + " WHERE artId = '" + entryId + "'", null);
getStar.moveToFirst();
if (getStar.getInt(0)) { // This will get the integer value of the COUNT(*)
    // It has data
}

我有点不确定上述结果;相反,您可以查询结果的数量:

getStar = db.rawQuery("SELECT * FROM " + TABLE_NAME + " WHERE artId = '" + entryId + "'", null);
if (getStar.getCount() > 0) { // This will get the number of rows
    // It has data
}
于 2012-10-01T19:24:34.023 回答
1

moveTofirst() 方法尝试将光标移动到第一个位置(从 0 开始),如果可以,则返回 true。否则返回false。所以你可以这样做:

if (getStar.moveToFirst) {
// your code
} else {}

如果有一个值 if 语句将被执行,否则它不会

于 2012-10-01T19:24:29.163 回答
0

您正在记录游标String表示,而不是 column 的值artId。要从光标中获取列的值,artId您必须这样做:

int count = -1;
// if the cursor is not empty
if(getStar.moveTofirst())
    count = getStar.getInt(getStar.getColumnIndex("artId");

if(count != -1)
    // do something
于 2012-10-01T19:24:02.517 回答