1

データベースにクエリを実行して、テキストボックスに入力された名前を返そうとしています。データベース内のすべてのアイテムを表示できましたが、テキストボックスを使用して名前を検索したいと思います。名前を入力して検索ボタンを押すと、log catは、「そのような列はありません:john:コンパイル中:SELECT name、gender、height、age、hair FROM details WHERE name = john ORDERbyname。」というエラーを表示します。

 private void findRecords(){
    EditText find = (EditText)findViewById(R.id.nameSearch);
    EditText name = (EditText)findViewById(R.id.nameFound);
    EditText gender = (EditText)findViewById(R.id.genderFound);
    String s = find.getText().toString();
    //Long l = Long.parseLong(s);
    DatabaseClass hon = new DatabaseClass(this);

    String returnedName = hon.getName(s);
    String returnedGender = hon.getGender(s);

    name.setText(returnedName);
    gender.setText(returnedGender);

}


    public String getName(String s) {
    // TODO Auto-generated method stub
    String[] columns = new String[] {NAME_COLUMN, GENDER_COLUMN, HEIGHT_COLUMN, AGE_COLUMN, HAIR_COLUMN};
    Cursor c = sherlockdb.query(TABLE_NAME, columns, NAME_COLUMN +"="+ s, null, null, null, NAME_COLUMN);
    if (c != null){
        c.moveToFirst();
        String name = c.getString(1);
        return name;
    }
    return null;
}

親切に助けてください

4

3 に答える 3

3

交換:

Cursor c = sherlockdb.query(TABLE_NAME, columns, NAME_COLUMN +"="+ s, null, null, null, NAME_COLUMN);

と:

String[] args={s};
Cursor c = sherlockdb.query(TABLE_NAME, columns, NAME_COLUMN +"=?", args, null, null, NAME_COLUMN);
于 2012-11-16T12:51:54.357 に答える
1

あなたのコラムはどのようなデータですか?文字通りのジョンを''の間に置くのを忘れたと思います。

あなたはこれを試すことができます:

SELECT name, gender, height, age, hair FROM details WHERE name='john' ORDER by name;
于 2012-11-16T12:51:29.883 に答える
0

これを試して:

Cursor c = sherlockdb.query(TABLE_NAME, columns, NAME_COLUMN +"='"+ s+"'", null, null, null, NAME_COLUMN);

'john'形式の文字列が必要なためです。

于 2012-11-16T12:51:30.910 に答える