Erstellen Sie die Abfragezeichenfolge in Stufen und nicht auf einmal. Wenn Sie immer gegen den Status auswählen möchten, stellen Sie dies in die WHERE-Klausel und fügen Sie dann weitere Ausdrücke hinzu. Verwenden Sie Parameter (die Sie mit SQLiteDatabase.query
ausführen können), anstatt Werte in die Abfrage selbst zu verketten, um eine SQL-Injektion zu verhindern. dbtable
besser nicht von nicht vertrauenswürdigen Quellen kommen (z. B. Benutzer, die Datenbank selbst). Mein Java ist ein wenig rostig, aber versuchen, so etwas wie das Start folgendes:
List<String> argList = new LinkedList<String>();
String selection = "Status=?";
argList.add(item);
if (ball != null && ball.length()) {
selection += " AND ball_court=?";
argList.add(ball);
}
if (vendor != null && vendor.length()) {
selection += " AND Tovendor=?";
argList.add(vendor);
}
String[] argArray = new String[argList.length()];
argList.toArray(argArray);
// columns is a String[] of column names
Cursor dbcur = myDB.query(false, dbtable, columns, selection, argArray, null, null, null);
Anstatt Strings anhängt, könnte man ein StringBuilder
verwenden möchten.
Was SELECT *
lesen „What is the reason not to use SELECT *?“
Hinweis: Sie können Zeilen als Code formatieren, indem sie vier Leerzeichen einrücken. Die Schaltfläche "101 \ n010" in der Editor-Symbolleiste erledigt dies für Sie. Klicken Sie auf das orangefarbene Fragezeichen in der Editor-Symbolleiste, um weitere Informationen und Tipps zum Formatieren zu erhalten. – outis