Escape (' ) symbol in Textbox for asp.net c#Der beste Weg parametrisierte Abfrage in C#
Basierend zu Debuggen auf die Frage in der Post über, die meisten Leute vorgeschlagen, dass „parametrisierte Abfrage“ ist die beste Lösung, um die SQL-Injection zu vermeiden.
Unten ist mein Code, indem Sie die SQL-Injection
public DataSet checkemp(string user)
{
strsql = "SELECT * from employee where employeeid = @userid";
SqlConnection con = new SqlConnection(connectionString);
SqlDataAdapter da = new SqlDataAdapter(strsql, connectionString);
da.SelectCommand.Parameters.Add("@userid", SqlDbType.VarChar, 50).Value = user;
// pretend the user name is "Micheal"
con.Open();
DataSet ds = new DataSet();
da.Fill(ds);
con.Close();
con.Dispose();
return ds;
}
Während der Fehlersuche verwendet wird, kann ich nur die Abfrage erhalten "SELECT * from employee where Employeeid = @userid" wenn ich auf "strsql" label zeigen, aber nicht „SELECT * from employee where Employeeid = 'Micheal'
Jede Lösung, um diese Frage zu lösen, schlug vor, und machen es die meisten Effizienz dank jeder
Einfache Antwort ist nein, es ist nicht möglich, den Befehl als "SELECT * von Mitarbeiter, wo MitarbeiterID =" Micheal ". Bei Überstreichen von" Strsql ". –
Sie können auch Profiler, um die tatsächliche SQL-Anweisung anzuzeigen ausgeführt auf Datenbank – Yogi
Wenn Sie die Abfrage testen möchten, warum tun Sie es nicht in der SQL-Server – woodykiddy