2010-12-08 39 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);