我正在为我的游戏创建一个数据库,一切正常,直到我想查询一个项目。
我一直在尝试几种不同的方法,但我无法使其发挥作用。我只是在代码中看不到错误。
代码如下:
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
答案 0 :(得分:1)
为了使查询有效,也许你应该尝试这个:
KEY_ICON + "= '" + icon + "' "
因为'icon
'是一个字符串值。由于您没有指定它,它可能试图将其理解为投影中的一列
但这是实现此类功能的错误方法。不要对getItem()
方法本身(主线程)执行数据库查询,它应该在后台运行,因此不会影响主线程。
请阅读AsyncTask。
答案 1 :(得分:0)
试试这个
Cursor cursor = db.query(DB_TABLE, columns, KEY_ICON + "='" + icon +"'",
null, null, null, null);
我添加了'