1

どこが間違っているのかわかりません。Android開発に不慣れで、SQLITEデータベースでコードを試しています。

私はcardsという名前のデータベースを持っており、その中にmycardsという名前のテーブルがあります。私のcreateステートメントは次のとおりです。

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の3つの可能な値があります。データを取得する場合は、card_type列の値(文字列)でフィルタリングする必要があります。

したがって、私のフェッチ関数は次のとおりです。(1つのタイプのみを表示):

 public Cursor fetchallPCards() {



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

}

しかし、iamはエラーを取得します:

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

fetchallPCardsメソッドを次のように変更します。

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 に答える