2 Stimmen

Die Verwendung von like-Anweisung in einer ODBC-Verbindung

Gibt es eine Möglichkeit, eine LIKE-Anweisung unter Verwendung einer ODBC-Verbindung in .NET zu verwenden? Ich habe alles versucht, woran ich denken konnte, aber ich bekomme immer eine SQL-Ausnahme.

SELECT field FROM table WHERE fieldName LIKE '%SOME_STRING%';

string sql = "SELECT field FROM table WHERE fieldName like '%?%';

Ich benutze Sybase SQL Anywhere 11.

3voto

David Punkte 70550

Sie können die LIKE-Anweisung verwenden, solange die von Ihnen verbundene Datenbank sie unterstützt. Ob Sie ODBC verwenden oder nicht, sollte damit nichts zu tun haben.

Ein Fallstrick, auf den Sie achten sollten, ist, dass verschiedene Datenbanken unterschiedliche Platzhalter und verschiedene Syntax verwenden. (Zum Beispiel verwendet MS Access "*" als Platzhalter, während SQL Server "%").

http://office.microsoft.com/en-us/access-help/like-operator-HP001032253.aspx

http://msdn.microsoft.com/en-us/library/ms179859.aspx

So oder so, schauen Sie sich die Dokumentation für die von Ihnen verbundene Datenbank an, um zu sehen, ob sie die LIKE-Anweisung und die richtige Syntax unterstützt.

Oder schauen Sie sich die Antworten hier an: Parametrisierte Abfragen mit LIKE- und IN-Bedingungen

Bearbeiten

Ich sehe, dass Sie versuchen, einen Eingabeparameter als Teil der LIKE-Klausel zu verwenden. Ich kann keine Dokumentation finden, die spezifisch für Sybase ist, aber selbst auf der SQL Server-Seite müssen wir (unglücklicherweise) den String in diesem Fall verknüpfen. Mir ist klar, dass dies aus Sicht einer SQL-Injektion schlecht ist, aber ich glaube nicht, dass es einen Ausweg gibt, sodass Sie auf das Säubern/Escape des Strings zurückgreifen müssen.

Hier ist ein Beitrag dazu in SQL Server. Hoffentlich lässt sich dies in etwas übersetzen, das mit Sybase ASA funktioniert. http://palisade.plynt.com/issues/2006Jun/injection-stored-procedures/

Als letzte Möglichkeit können Sie dies verwenden:

string sql = "SELECT field FROM table WHERE fieldName like '%" + SOMESTRING.Replace("'", "''") + "%';

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