1

我不知道我哪里出错了,我是 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 中的值(字符串)。

因此我的 fetch 函数是:(仅显示一种类型):

 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

我哪里出错了?据我所知,我认为我是对的。

4

2 回答 2

1

您需要在查询中为字符串加上引号,请尝试:

return mDb.query(DATABASE_TABLE, new String[] { "card_name" }, TYPE + "=" + "'Pcard'", null, null, null, null);
于 2013-03-13T19:10:15.310 回答
0

Change the fetchallPCards method to look like this:

public Cursor fetchallPCards() { 

   return mDb.query(DATABASE_TABLE, new String[] {"card_name"},TYPE+"=?", 
                                    new String[] {"Pcard"}, null, null, null);   
}
于 2013-03-13T19:23:34.480 回答