0

カーソルに単一の文字があります。それを文字列に変換してアラートボックスに表示するにはどうすればよいですか?

これが私のコードです...

   public class MainActivity extends Activity {
    SQLiteDatabase db;
    String a,c;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        db=openOrCreateDatabase("dat", MODE_PRIVATE, null);
        db.execSQL("CREATE TABLE IF NOT EXISTS rk(num integer,alph char);");
        db.execSQL("INSERT INTO rk VALUES('1','a');");
        db.execSQL("INSERT INTO rk VALUES('2','b');");
        db.execSQL("INSERT INTO rk VALUES('3','c');");
        db.execSQL("INSERT INTO rk VALUES('4','d');");
        db.execSQL("INSERT INTO rk VALUES('5','e');");
    }

    public void disp(View view){
      EditText ed;
      ed=(EditText)findViewById(R.id.editText1);
      a=ed.getText().toString();
      Cursor b=db.rawQuery("SELECT alph FROM rk WHERE num='a';",null);
      c=b.getString(b.getColumnIndex("alph"));
      Builder builder=new AlertDialog.Builder(MainActivity.this);
      builder.setMessage(c);
      AlertDialog alert=builder.create();
      alert.show();

}
4

2 に答える 2

0

クエリでは、編集テキストの値を保持する String オブジェクトの代わりに as string を使用しています。したがって、次のようにクエリを更新します。

a=ed.getText().toString();

Cursor b=db.rawQuery("SELECT alph FROM rk WHERE num='" + a +"'",null);

if (b.getCount() > 0 ) {
      c=b.getString(b.getColumnIndex("alph"));
      showMessage(c);
} else {
      showMessage("No record match");
}


private void showMessage(String msg) {
     Builder builder=new AlertDialog.Builder(MainActivity.this);
      builder.setMessage(msg);
      AlertDialog alert=builder.create();
      alert.show();
}
于 2013-08-30T11:01:59.617 に答える
0

カーソル オブジェクトは既に列「alph」の値のみを保持しており、ここでもう一度インデックスをクエリしようとしています c=b.getString(b.getColumnIndex("alph"));。これが問題を引き起こしていると思います。

したがって、代わりに、次のようにカーソルの値を直接出力することができます。

  c=b.getString(0);
于 2013-08-30T11:03:24.153 に答える