Solución:
Es prácticamente lo mismo que ejecutar una consulta. En su código original, está creando un objeto de comando, poniéndolo en el cmd
variable y nunca la use. Aquí, sin embargo, usará eso en lugar de da.InsertCommand
.
Además, use un using
para todos los objetos desechables, de modo que esté seguro de que se eliminan correctamente:
private void button1_Click(object sender, EventArgs e) {
using (SqlConnection con = new SqlConnection(dc.Con)) {
using (SqlCommand cmd = new SqlCommand("sp_Add_contact", con)) {
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text;
cmd.Parameters.Add("@LastName", SqlDbType.VarChar).Value = txtLastName.Text;
con.Open();
cmd.ExecuteNonQuery();
}
}
}
Tienes que agregar parámetros ya que es necesario para que el SP se ejecute
using (SqlConnection con = new SqlConnection(dc.Con))
{
using (SqlCommand cmd = new SqlCommand("SP_ADD", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@FirstName", txtfirstname.Text);
cmd.Parameters.AddWithValue("@LastName", txtlastname.Text);
con.Open();
cmd.ExecuteNonQuery();
}
}
cmd.Parameters.Add(String parameterName, Object value)
ahora está en desuso. En su lugar use cmd.Parameters.AddWithValue(String parameterName, Object value)
Add (String parameterName, Object value) ha quedado obsoleto. Utilice AddWithValue (String parameterName, Object value)
No hay diferencia en términos de funcionalidad. La razón por la que desaprobaron el
cmd.Parameters.Add(String parameterName, Object value)
a favor deAddWithValue(String parameterName, Object value)
es dar más claridad. Aquí está la referencia de MSDN para el mismo
private void button1_Click(object sender, EventArgs e) {
using (SqlConnection con = new SqlConnection(dc.Con)) {
using (SqlCommand cmd = new SqlCommand("sp_Add_contact", con)) {
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@FirstName", SqlDbType.VarChar).Value = txtFirstName.Text;
cmd.Parameters.AddWithValue("@LastName", SqlDbType.VarChar).Value = txtLastName.Text;
con.Open();
cmd.ExecuteNonQuery();
}
}
}