14 Stimmen

SQLite .query()-Methode, WHERE-Klausel nimmt nur Zeichenketten in Anführungszeichen

Ich habe eine Variable:

String owner="Mike";
String[] columns ={"quantity", "price","owner"}

Mein Cursor versucht, die
Cursor findEntry = db.query("sku_table", columns, "owner="+owner, null, null, null, null);

Ich erhalte die Fehlermeldung no such column error

android.database.sqlite.SQLiteException: no such column: owner: , while compiling: SELECT quantity, price, owner, FROM sku_table WHERE owner=Mike

Aber wenn ich diese Anfrage nehme:

SELECT quantity, price, owner, FROM sku_table WHERE owner=Mike

und hinzufügen "" zu Mike, und in Sqlite-Browsern getestet, um die Abfrage auszuführen, erhalte ich die Zeile zurück. Die Arbeitsabfrage sieht wie folgt aus:

SELECT quantity, price, owner, FROM sku_table WHERE owner="Mike"

Kann mir jemand sagen, wie ich doppelte Anführungszeichen einbauen kann? Abgesehen von der Verwendung von \" Danke!

88voto

WarrenFaith Punkte 56919

Sorry, aber das ist genau der Grund, warum man mit dem arbeiten sollte, was die Methode bietet! @Leandros und @Jake helfen in die völlig falsche Richtung! Tut mir leid, das zu sagen...

Die einzige Lösung, die Sie verwenden sollten, ist diese:

Cursor findEntry = db.query("sku_table", columns, "owner=?", new String[] { owner }, null, null, null);

ps: Ja, ich habe beide Antworten heruntergestimmt, da sie zwar funktionieren, aber eine Lösung bieten, die nicht verwendet werden sollte.

Aktualisierung:

Wenn Sie mehr als eine Where-Bedingung benötigen, fügen Sie diese einfach wie bei einer normalen Abfrage hinzu

Cursor findEntry = db.query("sku_table", columns, "owner=? and price=?", new String[] { owner, price }, null, null, null);

Die Reihenfolge der ? und die new String[] {...} Elemente müssen identisch sein!

2voto

Leandros Punkte 16612

SELECT quantity, price, owner, FROM sku_table WHERE owner='Mike' dies ist die richtige AUSWAHL. Sie vergessen das ' ' (einfache Anführungszeichen)

2voto

Jake Punkte 2441
Cursor findEntry = db.query("sku_table", columns, "owner='"+owner+"'", null, null, null, null);

1voto

sandhu Punkte 285
 public Cursor show_vol(String  vol,String bk,String hadnu)
           { 
              SQLiteDatabase db = this.getReadableDatabase();
              String[] columns ={"hadith"};//colums name that you select

              Cursor res = db.query("volume2", columns, "hadithno=?", new String[] { hadnu }, null, null, null);

 //volume2 is table name  and hadithno is colume name  l
//select hadith from volume2 where hadithno=hadnu  //working like s

 1. List item

              return res;
           }

0voto

Randy Punkte 919

Ich weiß, das ist eine alte Frage, aber man kann es auch so machen:

Cursor findEntry = db.query("sku_table", columns, "owner=\'"+owner+"\'", null, null, null, null);

Ich habe es gerade in meiner App gemacht und es hat wie erwartet funktioniert.

Jakes Antwort war ähnlich, würde aber wahrscheinlich ohne das \ vor dem '' nicht funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X