【发布时间】:2016-07-31 14:34:14
【问题描述】:
我需要一种方法来更新我的 datagridview 中的单元格并使用查询将其保存到数据库中,但我遇到了这个异常:
变量名'@startdate'已经被声明。变量 名称在查询批处理或存储过程中必须是唯一的
这是我的代码:
private void toolStripLabel1_Click(object sender, EventArgs e)
{
try
{
conn.Open();
string query2 = "UPDATE [Semester] SET [Start_Date]=@startdate, " +
" [End_Date]=@enddate WHERE [Sem_Num]=@sem";
cmd = new SqlCommand(query2, conn);
if (dataGridView1.Rows.Count > 0)
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
cmd.Parameters.AddWithValue("@startdate",
dataGridView1.Rows[i].Cells[1].Value.ToString());
cmd.Parameters.AddWithValue("@enddate",
dataGridView1.Rows[i].Cells[2].Value.ToString());
cmd.Parameters.AddWithValue("@sem",
Convert.ToInt32(dataGridView1.Rows[i].Cells[0].Value));
this.dataGridView1.EndEdit();
cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
}
【问题讨论】:
-
特别是在这种情况下,日期被转换为字符串并且数据库需要将这些字符串重新转换回日期。错误的秘诀。
-
您不应保留全局 conn 对象。只需在方法内创建一个新的。
标签: c# .net sql-server sql-server-2008