0

私はAndroidとSQLiteも初めてです。DB クエリが DB から特定の行を取得するメソッドを作成しようとしています。このバージョンのメソッドは、Selection が null に設定されている場合に正常に機能します。

    public String anotherTry(){
        String[] columns = new String[]{ KEY_SDATE, KEY_SC, KEY_VE };
        Cursor cursor = db.query(DATABASE_TABLE, columns, null, null, null, null, null);
        String result = "";
        if (cursor != null){
            cursor.moveToFirst();
            result = result
        + cursor.getString(0) + "\n"
        + cursor.getString(1) + "\n"
            + cursor.getString(2) + "\n";
            return result;
        }
        return null;
    }

しかし、Selection 引数に何かを入れると、クラッシュします。例えば:

    public String anotherTry(){
        String[] columns = new String[]{ KEY_SDATE, KEY_SC, KEY_VE };
        Cursor cursor = db.query(DATABASE_TABLE, columns, KEY_ROWID + "=" + "8", null, null, null, null);
        String result = "";


        if (cursor != null){
            cursor.moveToFirst();
            result = result
        + cursor.getString(0) + "\n"
        + cursor.getString(1) + "\n"
            + cursor.getString(2) + "\n";
            return result;
        }
        return null;
    }

ここで何がうまくいかないのですか?8行目を表示させようとしています。考えられるすべての書式設定の組み合わせを試しました: KEY_ROWID + "=" + "8"、KEY_ROWID = "8" などですが、うまくいきません。助けてくれてありがとう!

4

2 に答える 2

0

フォローインコードを試してみてください、私はそれがあなたのために働くと思います

Cursor cursor = db.query(DATABASE_TABLE, columns, KEY_ROWID+"=?", new String[] {"8"}, null, null, null);
于 2012-04-04T17:22:42.530 に答える
0

次のコードを試してください。

Cursor cursor = db.query(DATABASE_TABLE, columns, KEY_ROWID + "=8", null, null, null, null);

または、KEY_ID=8 のデータベースには何も存在しないと思います。bcoz クエリがデータを返さない場合、CursorIndexOutOfBounds 例外が発生します。データベースが KEY_ROWID=8 に存在するかどうかを確認してください。

于 2012-04-04T18:52:47.710 に答える