2011-08-05 3 views
-1

私はこのようなSQLクエリ書いています:SQLiteException無いような列

Cursor data = db.query(WhereWolfOpenHelper.FRIEND_TABLE_NAME, null, WhereWolfOpenHelper.FRIEND_GROUP_COLUMN+"="+params[0], null, null, null, null); 

をそして、次のエラー生産ます:友達と呼ばれる何の列がありません

ERROR/AndroidRuntime(620): Caused by: android.database.sqlite.SQLiteException: no such column: Friends: , while compiling: SELECT * FROM ww_friend WHERE friend_group=Friends 

は、私が行を取得したいですfriend_group列の値はFriendsです。私は間違って何をしていますか?

+0

'Friends'はそのに文字列値を説明するために引用されるべきではなく、オブジェクト名 –

+0

あなたは、単一引用符( ')と[0]'周囲 'paramsはを試してみました:

これを試してみてください? –

答えて

0

あなたが引用して友達に値を囲む必要があります。

Cursor data = db.query(WhereWolfOpenHelper.FRIEND_TABLE_NAME, null, WhereWolfOpenHelper.FRIEND_GROUP_COLUMN+"='"+params[0]+"'", null, null, null, null); 

PS:PARAMから危険な文字をエスケープするようにしてくださいあなたはSQLインジェクション

+0

ありがとうございました(まだ早すぎるので、私はまだ受け入れることができません)。エスケープについてのヒントをありがとう。私はいつもエスケープし、PHPでパラメータ化されたクエリを使用しますが、Java/Androidには同等の機能がありますか? – Pikaling

+0

ハム、私はそれと同等の方法は知らない。しかし、実装が簡単です。引用符をエスケープし、常にすべての値(整数も)を引用符で囲むようにしてください。 –

0

を避けるために、このように行う時に[0]私は推測していますその"Friends"は値なので、引用符で囲む必要があります。

Cursor data = db.query(WhereWolfOpenHelper.FRIEND_TABLE_NAME, null, WhereWolfOpenHelper.FRIEND_GROUP_COLUMN+"=\""+params[0]+"\"", null, null, null, null); 
関連する問題