Ich habe zwei SQL-Anweisungen in meinem C# -Code, um einige Werte abzurufen. Ich weiß, dass sie für SQL-Injection offen sind, da ich keine Parameter verwende, aber ich bin mir nicht sicher, ob ich sie richtig implementiere.Korrekte Sicherung der SQL-Anweisung mit Parametern
(Anmerkung: Jede von diesen sind in Schleifen, die durch die Zeilen einer Datentabelle sind Looping) Erstes Beispiel:
string sql2 = "select max(day) as day from users u join days d on d.User_ID = u.id where u.ActiveUser = 1 and u.id = " + Users["ID"].ToString();
command.CommandText = sql2;
string dt = command.ExecuteScalar().ToString();
In der obigen Erklärung ist es ein Datumzeit abgerufen und auf String dt zuordnet. Alles mit ID oder ID ist ein Bigint.
string sql = "SELECT MAX(Day) FROM Days WHERE Project_ID IN (SELECT ID FROM Projects WHERE Parent_ID = -1 AND ID = " + row["ID"] + ") HAVING MAX(Day) < DATEADD(dd, -730, getdate())";
command.CommandText = sql;
object val = command.ExecuteScalar();
Die obige Anweisung ist die gleiche wie die erste Anweisung, da sie einen Datetime-Wert abruft. Alles mit ID oder ID ist ein Bigint.
Hier ist, was ich für die erste kam, vermisse ich etwas oder etwas falsch machen?
string sql2 = "select max(day) as day from users u join days d on d.User_ID = u.id where u.ActiveUser = 1 and u.id = @userID";
using (conn)
{
using (SqlCommand cmd = new SqlCommand(sql2, conn))
{
command.Parameters.AddWithValue("@userID", drUsers["ID"]);
conn.Open();
dt = (DateTime)command.ExecuteScalar();
}
}
Anmerkung: Ich stellte eine Frage der vergangenen Woche auf Datetime-Konvertierungen und es gab ein Problem, das nicht gelöst werden könnte, so könnte ich muss nur einen String-Version des Datetime verwenden, der zurückgegeben wird. Wird sich das auf irgendetwas auswirken?
Wenn die Parameter in der Abfrage ist? – JNF
Sorry, bearbeitet meinen Beitrag. – pfinferno
Sieht OK aus. [Related] (http://stackoverflow.com/questions/265192/get-the-generated-sql-statement-from-a-sqlcommand-object) (siehe alle Antworten) [Siehe diese Erklärung] (http: // www.csharp-station.com/Tutorial/AdoDotNet/Lesson06) – JNF