| 

.NET C# Java Javascript Exception

1
Hallo zusammen,
jetzt muss ich erneut fragen:
In einer Spalte habe ich
ALG Bremen
LG Hannover
ALG Berlin
LG Stuttgart
LG Berlin,
Abfrage:
public Cursor getLager_Data_LG() {
String ges = "LG";
return mDb.query( LAGER_TABLE,
null,
//LAGER_COLUMN_A + " LIKE + '%" + ges + "%' ",
LAGER_COLUMN_A + " LIKE "+ ges + "+'%'", // exception
null,
null,
null,
null);
}

Mit dem auskommentierten Code findet er auch immer die ALG, ich wollte aber,
dass nur die LG gefunden werden.
Im SQlite Database Browser macht die entsprechende SQL-Abfrage:
SELECT lager FROM marb WHERE lager LIKE  'lg%'

kein Problem;in der Android Anwendung funktioniert das nicht.
Wie schreibt man den entsprechenden Wildcard?
Kann mir jemand einen Tipp geben
Danke
Lukos
News:
04.11.2014
Lukos 35 5
Die Exception löst SQLite in dem Fall aus. Du hast im nicht auskommentierten Teil nach dem LIKE ein ' vergessen, also LIKE '"+ ges + "+'%'"
muffi 05.11.2014
2 Antworten
0
Die Bemerkung von "muffi" ist richtig.

Ich hätte vielleicht noch eine Anmerkung dazu.
Wenn Sie solche Abfragen häufig verwenden wollen, dann sollten Sie unbedingt eine Funktion integrieren, die übergebene Strings maskiert. Wenn ein Nutzer bei Ihnen im Abfragewert ein Hochkomma verwendet, dann muss dieses verdoppelt werden, also z.B.

Hoch's Kaffeehaus --> 'Hoch''s Kaffeehaus'

oder man verwendet gleich parametrierte Abfragen mit ?-Platzhalter. Hier sorgen die Ersetzungsfunktionen für die korrekte Auflösung.
05.11.2014
edvservice 1,2k 6
0
Hallo,
danke für die Hilfsbereitschaft.
aber mein "Vergessen",( -wie die Anmerkung - )
Lager_COLUMN_A  + " LIKE '" +ges+ "'%'" ,

wirft die Exception aus LOGCAT:
android.database.sqlite.SQLiteException: unrecognized token: "'" (code 1): , while compiling: SELECT * FROM marb WHERE idx = 3 AND lager LIKE 'LG'%'

Nach langen Versuchen, bin ich fast der Meinung, dass in dieser Art die Abfrage gar nicht geschrieben werden kann ?

Oder liege ich falsch ?

Grüße
Lukos


Mittlerweile habe ich es herausgefunden:
So funktioniert es jetzt:

Lager_COLUMN_A  + " LIKE  'LG%'",


Danke für die Hilfsbereitschaft
Grüße
LUKOS
05.11.2014
Lukos 35 5
Entschuldige, das ' vor dem % hatte ich auch übersehen. Aber Du hast ja jetzt die funktionierende Abfrage.
muffi 06.11.2014

Stelle deine Android-Frage jetzt!