1

ゲーム用のデータベースを作成しています。1 つのアイテムをクエリするまで、すべてが機能しています。

私はいくつかの異なる方法を試してきましたが、うまくいきません。コードにエラーが表示されないだけです。

コードは次のとおりです。

   public Item getItem(String icon) {
       String[] columns = {KEY_ID, KEY_TYPE, KEY_ICON, KEY_LEVEL, KEY_ARMOR, KEY_DAMAGE, KEY_BUY, KEY_SELL};
       Cursor cursor = db.query(DB_TABLE, columns, KEY_ICON + "=" + icon,
       null, null, null, null);
      Item item=null;
       if(cursor != null && cursor.moveToFirst()) {
           item= new Item(cursor.getString(TYPE_COLUMN), 
                     cursor.getString(ICON_COLUMN),
                     cursor.getString(LEVEL_COLUMN),
                     cursor.getString(ARMOR_COLUMN),
                     cursor.getString(DAMAGE_COLUMN),
                     cursor.getString(BUY_COLUMN),
                     cursor.getString(SELL_COLUMN)
                           );
       }
       return item;
   }

私が得ているエラーは

そのような列はありません: fast_boots (コード 1): コンパイル中: SELECT id、type、icon、level、armor、damage、buy、sell from items where icon=fast_boots

.getItem("fast_boots"); を見つけようとするとき SQL データベースに fast_boots が表示されます

4

2 に答える 2

1

クエリを機能させるには、これを試してみてください:

KEY_ICON + "= '" + icon + "' "

icon」は文字列値です。あなたはそれを指定していないので、おそらく射影の列であると理解しようとしています

ただし、これはそのような機能を実装する間違った方法です。メソッド自体 (メイン スレッド) でデータベース クエリを実行しないでくださいgetItem()。バックグラウンドで実行する必要があるため、メイン スレッドには影響しません。

AsyncTaskについてお読みください。

于 2013-03-18T16:10:44.963 に答える
0

これを試して

Cursor cursor = db.query(DB_TABLE, columns, KEY_ICON + "='" + icon +"'",
       null, null, null, null);

追加した'

于 2013-03-18T16:14:13.793 に答える