Когда я использую следующий код, цикл повторяется дважды, и я получаю сообщение об ошибке: «Имя переменной« @ projectName1 »уже объявлено. Имена переменных должны быть уникальными в пакетной или хранимой процедуре запроса. " и сброса всех значений таблицы в datagridview, а также в таблице. На самом деле я хочу обновить DataGridView в самой форме, выбрав ячейку, и она должна отражать то же самое в базе данных.DataGridView Обновление базы данных
private void btnUpdate_Click(object sender, EventArgs e)
{
SqlConnection con = Helper.getconnection();
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
string myCmd = string.Empty;
foreach (DataGridViewRow myDgrow in dataGridView2.Rows)
{
myCmd = "Update Details set ProjectName='" + myDgrow.Cells["ProjectName"].Value + "', Description = '" + myDgrow.Cells["Description"].Value + "', DateStarted='" + myDgrow.Cells["DateStarted"].Value + "',TeamSize='" + myDgrow.Cells["TeamSize"].Value + "',Manager='" + myDgrow.Cells["Manager"].Value + "'";
cmd.Parameters.AddWithValue("@projectName1", myDgrow.Cells["ProjectName"].Value);
cmd.Parameters.AddWithValue("@Description1", myDgrow.Cells["Description"].Value);
cmd.Parameters.AddWithValue("@DateStarted1", myDgrow.Cells["DateStarted"].Value);
cmd.Parameters.AddWithValue("@TeamSize1", myDgrow.Cells["TeamSize"].Value);
cmd.Parameters.AddWithValue("@Manager1", myDgrow.Cells["Manager"].Value);
cmd.CommandText = myCmd;
cmd.ExecuteNonQuery();
dataGridView2.Update();
myCmd = string.Empty;
}
DataTable details = new DataTable();
SqlDataAdapter da = new SqlDataAdapter();
try
{
da.Update(details);
}
catch (Exception exceptionObj)
{
MessageBox.Show(exceptionObj.Message.ToString());
}
}
Почему вы строите команду со строкой, конкатенацией значений, а затем добавляете значения в качестве параметров, которые нигде не используются ? – Bridge
Хорошо, вы говорите, что я должен был использовать только один. Спасибо, позволь мне попробовать этот. –
Да - аналогичный пример этого ответа на этот ТОЧНЫЙ вопрос, который вы задали на прошлой неделе: http://stackoverflow.com/a/18402568/ – Bridge