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

エラーがないため、は有効(非)ですCursornull代わりに、データがあるかどうかを確認してください。

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列の値ではなく、カーソル表現をログに記録しています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 に答える