У меня есть это представление данных, где мне нужно вставить все, что у него есть. Таким образом, у меня есть 2 строки в моем datagridview. Всякий раз, когда я нажимаю кнопку сохранения, он спрашивает меня три раза. И эта ошибка появляется на xcom.ExecuteNonQuery ();
Это ошибка:
Параметризованный запрос '(@id nvarchar (4000), @ idtran
nvarchar (4000), @ qty nvarc 'ожидает параметр' @id ', который
не был поставлен.
Я проверил базу данных, и она вставляет правильное количество строк из таблицы данных. Я удивляюсь, почему окно с сообщением появляется 3 раза, а затем появляется сообщение об ошибке.
Пожалуйста, помогите мне, я новичок в c # и все еще учусь.
private void button9_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView2.Rows)
{
string query = @"INSERT INTO MED (id,idtran,qty,user)
Values(@id,@idtran,@qty,@user)";
using (SqlConnection xcon = new SqlConnection(@"Server=MEAND;Database=SHC;Integrated Security=SSPI;"))
{
using (SqlCommand xcom = new SqlCommand(query, xcon))
{
xcon.Open();
xcom.CommandType = CommandType.Text;
xcom.Parameters.AddWithValue("@id", row.Cells["id"].Value);
xcom.Parameters.AddWithValue("@idtran", row.Cells["idtran"].Value);
xcom.Parameters.AddWithValue("@qty", row.Cells["qty"].Value);
xcom.Parameters.AddWithValue("@user", row.Cells["user"].Value);
xcom.ExecuteNonQuery();
try
{
DialogResult result1 = MessageBox.Show("Are you sure you want to save this?",
"Important Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result1 == DialogResult.Yes)
{
Medi b = new Medi();
b.Show();
this.Hide();
}
}
catch (Exception)
{
throw;
}
finally
{
xcon.Close();
}
}
}
}
}