Instructions préparées dans SQL Server via C #

J'ai trouvé l'utilisation des instructions préparées en PHP par la fonction mysqli_stmt_prepare (). qu'est-ce que c'est en C # pour SQL-Server? J'ai trouvé cet exemple de code (en utilisant la command paramétrer). Est-ce que c'est ce que je cherche?

SqlConnection conn = new SqlConnection(); SqlCommand com = new SqlCommand(); SqlDataAdapter dap = new SqlDataAdapter(); DataTable tbl = new DataTable(); SqlParameter param = new SqlParameter(); conn.ConnectionSsortingng = @"Data Source=..."; com.Connection = conn; com.CommandText = "select * from tbl1 where id<@id"; com.Parameters.AddWithValue("@id",4); com.CommandType = CommandType.Text; dap.SelectCommand = com; conn.Open(); dap.Fill(tbl); conn.Close(); dataGridView1.DataSource = tbl; 

Si NON, alors quoi?
Si OUI, dites-moi comment utiliser le caractère '?' au lieu d'écrire @id dans le text de la command.
Merci

SQL Server (au less, via SqlClient) utilise des parameters nommés. Ce code va en effet exécuter une requête paramétrée, mais quelques notes:

  • il n'a pas été formellement "préparé" (voir. .Prepare() ), mais vous n'avez pratiquement jamais besoin de toute façon
  • plusieurs de ces objects sont IDisposable ; vous devriez avoir using s pour eux
  • DataTable (et adaptateur, etc) fonctionnera , mais est en déclin (avec les classs mappées étant préféré, IMO)
  • voir un DataGridView et un SqlCommand dans la même méthode signifie probablement que votre code d'interface user est trop proche du code d'access aux données; Je voudrais pousser les choses d'access aux données à un niveau, personnellement

Par exemple:

 DataTable tbl = new DataTable(); using(var conn = new SqlConnection(@"Data Source=...")) using(var com = conn.CreateCommand()) { com.CommandText = "select * from tbl1 where id<@id"; com.Parameters.AddWithValue("@id",4); com.CommandType = CommandType.Text; SqlDataAdapter dap = new SqlDataAdapter(); dap.SelectCommand = com; conn.Open(); dap.Fill(tbl); conn.Close(); } return tbl; 

(et le lier à DataGridView à l'interface user)

Bien sûr, si la valeur du paramètre est toujours 4 vous pouvez le coder directement dans le TSQL.

Oui, mais il est impossible d'utiliser '?' marque.