C# - Oledb-like-Anweisung nicht zurück keine Ergebnisse
Ich bin eine einfache asp.net/c# Anwendung und alles mit dem Oledb-hat Prima funktioniert bis jetzt.
Der like-Anweisung ist einfach nicht durch c#, arbeitete er als eine SQL-Abfrage in Access. Ich habe auch versucht nur mit '*a*'
statt '*@uname*'
aber es immer noch nicht etwas zurückzugeben.
OleDbDataAdapter dataAdapter = new OleDbDataAdapter(
"SELECT accounts.ID, uname, firstname, lastname, description FROM accounts, profiles " +
"WHERE accounts.ID = profiles.ID AND uname like '*@uname*'", connection);
dataAdapter.SelectCommand.Parameters.Add("@uname", OleDbType.VarChar).Value = tbxFilter.Text;
- Sollte es
'%?%'
? Auch, es sieht aus wie Ihr wollt einer beitreten - Vielen Dank, es hat funktioniert, aber warum % funktioniert nicht in access und * hat?
- Freut mich zu hören, dass es geklappt hat, bitte markieren Sie es als angenommen. Ich denke, dass%, sollte der Zugang auch nach dem Lesen der Dokumentation
- Oskar, es wird nicht nur angezeigt, er möchte mitmachen, er ist. Es ist einfach eine andere syntax.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, von hier aus kann ich sehen, eine schnelle Möglichkeit, es zu beheben:
werden und dann die parameter sollten wie folgt definiert:
oder
Randnotiz: wenn ich du wäre, würde ich nicht die tbxFilter.Text direkt ein. Verwenden Sie stattdessen dies:
da ein ' Zeichen in den parameter wird verletzt Ihre SQL-Abfrage-wenn nicht verdoppelt. Entweder das, oder Sie führen Sie diesen Sicherheits-check auf Ihre text-Steuerelement-Handler.
tbxFilter.Replace(...)
. Durch die Verwendung eines parameter-diese Flucht ist gesorgt für Sie.Das problem ist, dass Sie nicht mit den richtigen Platzhalter. Der Zugang kann entweder
*
oder%
, aber die meisten anderen verwenden nur%
Etwas wie dies funktioniert für mich in meiner DB.