Ich mache eine wirklich einfache Abfrage in ASP.NET, aber nachdem ich die LIKE
-Klausel eingefügt habe, funktioniert sie nicht mehr.
Beispiel:
%Vor%Wenn ich das LIKE entfernt habe, funktioniert es. Daher denke ich, dass es mit den Zitaten zu tun hat?
Der ursprüngliche Code verwirrt den Text der SQL-Anweisung mit dem Inhalt des Parameters. Ihr Code sollte eigentlich so aussehen:
%Vor% Die %
-Zeichen müssen Teil des Parameterwerts sein, und Sie benötigen keine einfachen Anführungszeichen, wenn Sie Bindungsparameter verwenden.
Nur ein Hinweis, dass die Verwendung von LIKE mit einem anfänglichen Platzhalter fast immer eine sehr schlechte Idee ist, da die Abfrage keine Indizes für diese Spalte verwendet. In diesem Fall können Sie wahrscheinlich davonkommen, weil es so aussieht, als würde der Filter in der ID-Spalte Sie auf einen Datensatz beschränken, aber im Allgemeinen wird stattdessen ein Volltextindex in die Namensspalte geschrieben und die Abfrage wie geschrieben das:
%Vor%Oder
%Vor%Wenn Sie den Parameter @MYNAME festlegen, fügen Sie die Zeichen "%" entsprechend hinzu (% SMITH%). Ich glaube nicht, dass Sie die einfachen Anführungszeichen brauchen, wenn Sie mit Parametern zu tun haben.
Glauben Sie nicht, dass die Verwendung eines Bindungsparameters dem Einfügen seines Werts in die SQL-Zeichenfolge ähnelt! Bind-Parameterwerte werden als separate Daten an die DB gesendet, daher dürfen sie nicht in Anführungszeichen stehen und sie dürfen auch keine optionalen SQL-Code-, Tabellen- oder Spaltennamen enthalten!