1

次の行で、「バインドまたは列インデックスが範囲外です」という例外が発生します。

Cursor cursor = db.query(TABLE_NAME, null, ID, new String[] { id }, null, null, null);

指定されたIDがデータベースに存在するかどうかを確認したいのですが、常にクエリがこの例外をスローし、何が問題なのかわかりません。私はこれを試してみましたが、例外は同じです:

Cursor cursor = db.query(TABLE_NAME, null, ID+" = ?", new String[] { id }, null, null, null);

これは私がプログラムした方法です。ここに何か問題がある場合は、教えてください:

public boolean existsAcc(String id)
    {
        //Check the parameters
        if (id == null)
        {
            throw new IllegalArgumentException(
                    "The id parameter cannot be null");
        }
        SQLiteDatabase db = getReadableDatabase();

        Cursor cursor = db.query(TABLE_NAME, null, ID, new String[] { id }, null, null, null);

        if (!cursor.moveToFirst())
        {
            cursor.close();
            return false;
        }

        cursor.close();

        return true;
    }
4

1 に答える 1

2

Chirag が回答を削除した理由はわかりませんが、彼は正しかったです。変化

Cursor cursor = db.query(TABLE_NAME, null, ID, new String[] { id }, null, null, null);

Cursor cursor = db.query(TABLE_NAME, null, ID + " = '" + id + "'", null, null, null, null);

トリックを行います。

于 2011-03-09T13:16:44.973 に答える