我有一个按钮,用于在我的UI设计中保存在datagridview中编辑的内容。这是Button_Save的代码:
public void btnUpdate_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
System.Data.SqlClient.SqlConnection sqlConnection1 =
new System.Data.SqlClient.SqlConnection("server=Test; Integrated Security=true; Database=Test;");
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
var sql = new StringBuilder();
sql.AppendLine("UPDATE dbo.JobStatus");
sql.AppendLine("Set ShipTrackingNumber = @ShipTrackingNumber");
sql.AppendLine(", ShipMethodTransmitted = @ShipMethodTransmitted");
sql.AppendLine(", DateShipTransmitProcessed = @DateShipTransmitProcessed");
sql.AppendLine(", ShipmentProcessedBy = @ShipmentProcessedBy");
sql.AppendLine(", Critical = @Critical");
sql.AppendLine(", ShipTransmitStatus = @ShipTransmitStatus");
sql.AppendLine("Where jobtableId = @jobTableId");
cmd.Connection = sqlConnection1;
cmd.CommandText = sql.ToString();
cmd.Parameters.AddWithValue("@TrackingNumber", row.Cells[7].FormattedValue);
cmd.Parameters.AddWithValue("@ShipMethodTransmitted", row.Cells[8].FormattedValue);
cmd.Parameters.AddWithValue("@DateShipTransmitProcessed", row.Cells[9].FormattedValue);
cmd.Parameters.AddWithValue("@ShipmentProcessedBy", row.Cells[10].FormattedValue);
cmd.Parameters.AddWithValue("@Critical", row.Cells[11].FormattedValue);
cmd.Parameters.AddWithValue("@ShipTransmitStatus", row.Cells[13].FormattedValue);
cmd.Parameters.AddWithValue("@jobTableId", row.Cells[5].FormattedValue);
sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();
我得到的错误是:“必须声明标量变量”@ShipTrackingNumber“。 我不想从代码中放入ShipTrackingNumber。相反,我想从UI中获取它。
我在这里做错了什么?
答案 0 :(得分:1)
嗯,“cmd.Parameters
”中@ShipTrackingNumber
没有条目。 “从UI中获取”是什么意思?你可以写一行来为这个参数添加一个条目:
cmd.Parameters.AddWithValue("@ShipTrackingNumber", GetShipTrackingNumberFromUI());
然后实施GetShipTrackingNumberFromUI()
以获得您想要的值。
看起来这一行应该是这些行,但你需要将“@TrackingNumber
”更改为“@ShipTrackingNumber
”:
cmd.Parameters.AddWithValue("@TrackingNumber", row.Cells[7].FormattedValue);
答案 1 :(得分:0)
要回答直接问题,请添加参数及其从UI获取的值。假设它是一个名为CheckBox1
的复选框:
cmd.Parameters.AddWithValue("@ShipTrackingNumber", CheckBox1.Checked);
答案 2 :(得分:0)
您需要替换此行:
cmd.Parameters.AddWithValue("@TrackingNumber", row.Cells[7].FormattedValue);
这一行:
cmd.Parameters.AddWithValue("@ShipTrackingNumber", row.Cells[7].FormattedValue);