La classe SqlParameter è utilizzata normalmente per la definizione dei valori associati ai parametri delle stored procedure di SQL Server.
In realtà la si può utilizzare anche per prevenire attacchi di tipo SQL-injection (ovvero, codice SQL inserito tramite vari strateggi ed eseguito dalla nostra pagina), anche in presenza di normali query, come quella di questo esempio.
<script runat="server" language="C#"> void SubmitClick(object sender, EventArgs e) { // connessione SqlConnection conn = new SqlConnection(strconn); // oggetto command string strSQL = "INSERT INTO Tabella (colonna, colonna2) VALUES (@colonna1, @colonna2)"; SqlCommand cmd = new SqlCommand(strSQL, conn); // parametri SqlParameter parameter1 = new SqlParameter("@colonna1", SqlDbType.NVarChar, 250); parameter1.Value = Server.HtmlEncode(colonna1.Text); cmd.Parameters.Add(parameter1); SqlParameter parameter2 = new SqlParameter("@colonna2", SqlDbType.NVarChar, 250); parameter2.Value = Server.HtmlEncode(colonna2.Text); cmd.Parameters.Add(parameter2); // connessione ed esecuzione query conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } </script>
Il codice è ovviamente funzionante con Access, a patto di utilizzare le classi contenute nel namespace System.Data.OleDb, anzichè System.Data.SqlClient.
In linea di massima basta cambiare il prefisso Sql negli oggetti Connection, Parameter e Command con OleDb perchè tutto funzioni alla stessa maniera.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.