从sqlite获取数据,WHERE子句中的错误

时间:2013-03-13 19:07:38

标签: android where-clause android-sqlite

我不知道我哪里出错,我是Android开发的新手,并尝试使用SQLITE数据库的代码:

我有一个名为cards的数据库,其中有一个名为mycards的表 我的创建声明是:

private static final String DATABASE_CREATE =
        "create table mycards(card_id integer primary key autoincrement, "
        + NAME + " text not null, card_type text not null,json_string text not null);";

我的插入功能如下:

 public long insertCard(String name, String type, String json_string) {
    ContentValues initialValues = new ContentValues();
    initialValues.put(NAME, name);
    initialValues.put(TYPE, type);
initialValues.put(JSON, json_string);
    return mDb.insert(DATABASE_TABLE, null, initialValues);
}


//here TYPE is card_type
card_type列中的

有三个可能的值Pcard,Bcard,Ccard。 当我想要检索数据时,我希望它在列card_type中的值(字符串)上进行过滤。

因此我的获取功能是:(仅显示一种类型):

 public Cursor fetchallPCards() {



  return mDb.query(DATABASE_TABLE, new String[] {"card_name"},TYPE+"="+"Pcard", null, null, null, null);   

}

但是我得到了错误:

03-14 00:26:21.233: E/SQLiteLog(701): (1) no such column: Pcard
我出错了哪里? 据我所知,我认为我是对的。

2 个答案:

答案 0 :(得分:1)

您的查询中需要围绕字符串引用,请尝试:

return mDb.query(DATABASE_TABLE, new String[] { "card_name" }, TYPE + "=" + "'Pcard'", null, null, null, null);

答案 1 :(得分:0)

fetchallPCards方法更改为如下所示:

public Cursor fetchallPCards() { 

   return mDb.query(DATABASE_TABLE, new String[] {"card_name"},TYPE+"=?", 
                                    new String[] {"Pcard"}, null, null, null);   
}