Erste SQL-Abfrage-string aus DbCommand mit Parametern
Kurz vor der Ausführung einer SQL-Abfrage auf eine MySQL-Datenbank in C# ich möchte zu Protokoll die Abfrage ausgeführt wird. Was ich jetzt natürlich nur Protokolle SELECT * FROM foo WHERE Id = @Id
wo ich möchte sehen, wie SELECT * FROM foo WHERE Id = 5
. Wie mache ich das?
DbCommand dbCommand = dbFactory.CreateCommand();
dbCommand.CommandText = "SELECT * FROM foo WHERE Id = @Id";
DbParameter param = dbCommand.CreateParameter();
param.ParameterName = "@Id";
param.Value = 5;
dbCommand.Parameters.Add(param);
dbConnection.Open();
Log.AddVerbose(String.Format("SQL query: {0}", dbCommand.CommandText));
dbCommand.ExecuteReader();
- Es hängt von der eigentliche, konkrete Datenbank-system, die Sie verwenden - nicht alle relationalen Datenbanken, die mit SQL als Ihre query-Sprache, arbeiten genau die gleiche Weise..... bitte aktualisieren Sie Ihre tags mit den entsprechenden Datenbank-system!
- Das Datenbank-system in Frage, ist MySQL, aktualisiert, post und tags Hinzugefügt
- Dies hängt davon ab, einige auf dem DB-system, aber für alle DB-Wert verwenden, wird die Zeichenfolge, die Sie suchen nie existiert, auch nicht auf dem Datenbank-server. Das ist der springende Punkt der parametrisierten Abfragen: um die Daten getrennt vom code. Deshalb query-Parameter sind also der Schlüssel zur Verhinderung von sql-injection-Angriffe: bösartige Daten nie etwas, irgendwo in der Nähe, um Ihre sql-string.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie versuchen, melden Sie tun können, eine Erweiterung Methode wie diese.
Und Sie können es verwenden, wie dieses.
?
Platzhalter, Sie haben match auf die Reihenfolge statt.