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 回答