2017-04-06 3 views
-1

引数でクエリに失敗しました。どうしましたか?AndroidのSQLiteは引数付きのクエリを実行しません

私は次のクエリが必要になります。

cursor = bd.rawQuery("SELECT * FROM user WHERE user.name=?", new String[]{"%"+nombre+"%"}); 

私は次のことを試してみました、彼らはまた失敗:

cursor = bd.rawQuery("SELECT * FROM user WHERE name=?", new String[]{"%"+nombre+"%"}); 

cursor = bd.rawQuery("SELECT * FROM user WHERE user.name=?", new String[]{nombre}); 

これは動作します:あなたの助け

+4

あなたの代わりに、 '='の 'LIKE'を使用したいかのように見えます。 –

答えて

-1

これを試してください。fooという名前のユーザーをリストしてください。

cursor = bd.rawQuery("SELECT * FROM user WHERE name = ?", new String[] {"foo"});

OR

cursor = bd.rawQuery("SELECT * FROM user WHERE name LIKE ?", new String[] {"foo"});

SQLiteDatabase rawQuery document reference

-2
ため

cursor = bd.rawQuery("SELECT * FROM user ", null); 

感謝を

試着する

cursor = bd.rawQuery("SELECT * FROM user WHERE name= '%"+ nombre + "%'", null); 
+0

パラメータ化されたクエリを使用してSQLインジェクションの領域([必須XKCDリンク](https://xkcd.com/327/))にpushawayするのとは別に、これは 'like'の代わりに' = 'を使いますOPには本当に '%Fred%'のフィールドがあります)。 – TripeHound

+0

ありがとうございますが、動作しません。 – user3139428

0

マイクが cursor = bd.rawQuery("SELECT * FROM user WHERE name LIKE ? ", new String[]{"%" + nombre + "%"});

またはあなたが本当にしたい、このように使用している場合は、あなたのコメントで言ったように:2番目のパラメータがnullである場合

cursor = bd.rawQuery("SELECT * FROM user ", null);

使用は代わりに文字列をエスケープ:

cursor = bd.rawQuery("SELECT * FROM user WHERE name LIKE '%" + nombre.replaceAll("'","''") + "%' ", null);

または説明hereのようなGLOBを使用しています。

関連する問題