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.
InformationsquelleAutor BioGeek | 2014-06-18
Schreibe einen Kommentar