在android中查询sqlite

时间:2013-03-18 15:57:49

标签: android sqlite

我正在为我的游戏创建一个数据库,一切正常,直到我想查询一个项目。

我一直在尝试几种不同的方法,但我无法使其发挥作用。我只是在代码中看不到错误。

代码如下:

   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,   图标,级别,盔甲,损坏,购买,出售图标= fast_boots

的项目

当试图找到.getItem(“fast_boots”);我确实在我的sql数据库中看到了fast_boots

2 个答案:

答案 0 :(得分:1)

为了使查询有效,也许你应该尝试这个:

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

因为'icon'是一个字符串值。由于您没有指定它,它可能试图将其理解为投影中的一列

但这是实现此类功能的错误方法。不要对getItem()方法本身(主线程)执行数据库查询,它应该在后台运行,因此不会影响主线程。

请阅读AsyncTask

答案 1 :(得分:0)

试试这个

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

我添加了'