2010-12-08 36 views
0

我有一个按钮,它将在datagridview中编辑的内容保存在我的UI设计中。以下是一个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从代码,而不是我想获取。它的用户界面。

我在做什么错在这里?

+0

除此之外,我没有看到一个`.AddWithValue (“@ShipTrackingNumber”,...)(只是一个`.AddWithValue(“@TrackingNumber”)`)?没有。 – 2010-12-08 20:08:45

回答

1

那么,有在cmd.Parameters因为没有进入“@ShipTrackingNumber”你是什么意思“从UI获取它”是什么意思?你可以只写一个为此参数添加条目:

cmd.Parameters.AddWithValue("@ShipTrackingNumber", GetShipTrackingNumberFromUI()); 

然后执行GetShipTrackingNumberFromUI()以获得您想要的值。

它看起来像这条线应该是沿着这些线路的东西,但你需要改变“@TrackingNumber”到“@ShipTrackingNumber”:

cmd.Parameters.AddWithValue("@TrackingNumber", row.Cells[7].FormattedValue); 
0

要回答你直接的问题,它的值添加参数取自用户界面。比方说,它是一个名为CheckBox1复选框:

cmd.Parameters.AddWithValue("@ShipTrackingNumber", CheckBox1.Checked); 
0

您需要替换这一行:

cmd.Parameters.AddWithValue("@TrackingNumber", row.Cells[7].FormattedValue); 

这一行:

cmd.Parameters.AddWithValue("@ShipTrackingNumber", row.Cells[7].FormattedValue);