Strings mit Sonderzeichen in Select-Statements
-
Hallo,
ich habe ein Programm, das SELECT-Statements ausführt und dadurch über ODBC daten aus einer Access-DB liest. Das funktioniert auch solange, bis der Suchstring keine Quotes (Zeichen ') enthält. Sobald dieses Zeichen im String enthalten ist, bekomme ich beim Ausführen der "Open"-Anweisung die Meldung "Syntax error (Missing operator) in expression" und dann den Ausdruck, nach dem ich suche.
Beispiel:CString sqlstring, searchstring; searchstring = "CAN'T DO THIS" sql_string.Format("SELECT * FROM tabelle WHERE [feld1] = '%s'", searchstring); table1.Open(CRecordset::snapshot, sql_string);table1 ist von CRecordset abgeleitet.
Mir ist klar, wo das Problem liegt, aber ich habe keine Ahnung, wie ich damit umgehen soll. Wie kann ich die Apostroph-Quotes irgendwie für das SELECT als Delimiter unkenntlich machen? Oder gibts eine andere Alternative?
Danke im voraus für die Hilfe
Grussyeti
-
Das sollte funktionieren(Funktioniert jedenfalls wenn ich eine Abfrage so in Access eingebe):
sql_string.Format("SELECT * FROM tabelle WHERE [feld1] = \"%s\"", searchstring);
So kriegst du nur noch Probleme wenn der Suchstring ein " enthält.
-
Hi, Andorxor,
hab ich schon versucht, aber dann sagt er mir: "Too few parameters. Expected 1."
?!?
Gruss
yeti
-
Doppelte ' könnten evtl. auch klappen:
searchstring = "CAN''T DO THIS";[edit]
also nicht Anführungszeichen (") sondern zwei Apostroph hintereinander(' ')
[/edit]
-
Hi isabeau,
das war die Lösung!!
searchstring = "CAN''T DO THIS" sql_string.Format("SELECT * FROM tabelle WHERE [feld1] = '%s'", searchstring);Danke nochmals + Gruss
yeti