1

以下のSQLのように最初の列を取得しようとしていますが、コードにエラーが表示されます。

SELECT subject FROM setting WHERE rowid=1

    public void getSetting(){
    result = "";

SQLiteDatabase db = myDbHelper.getReadableDatabase();   

Cursor c = db.query(true, "setting", new String[] {"subject", "language", "selection"}, "row=1", null, null, null, null, null);

    for(c.moveToFirst();!(c.isAfterLast());c.moveToNext()){

result = result + c.getString(0);
result = result + c.getString(0);
    result = result + c.getString(0);
    }
    if (c.getCount() == 0)              
    result = result + "result not found";   

c.close();      
db.close();         
myDbHelper.close(); 

}             
4

1 に答える 1

1

あなたの内容は少しわかりにくいですが、あなたが何を望んでいるのかは分かります。行のIDが特定の値である1行のみを返すようにカーソルを取得するにはどうすればよいですか。そして、返された行の 1 つの列からの文字列のみが必要です。主な問題は、_id探している列の指定だと思います。あなたはそれを呼んだrowrowid、それを再確認する必要があります。

さらに、次の書き直しにより、さらに問題が解決されることを願っています。

public String getSetting() {
    String result = "";
    String[] columns = {"subject"}; 
    String[] selectionArgs = {"1"};
    String LIMIT = String.valueOf(1); // <-- number of results we want/expect

    SQLiteDatabase db = myDbHelper.getReadableDatabase();   
    Cursor c = db.query(true, "setting", columns, "rowid = ?", selectionArgs, null, null, null, LIMIT);     

    if (c.moveToFirst()) {
        result = result + c.getString(0);
    } else {
        result = result + "result not found";
    }

    c.close();      
    myDbHelper.close();
    return result;
}    

しかも、しかも。エラーが発生した場合は、何が起こっているのかを把握できるように投稿する必要があります。

于 2012-11-19T07:20:35.850 に答える