2013-11-02 167 views
0

我想創建一個for循環,我想在其中編寫一個查詢,更新數據庫中每行的值。這些行存在於datagridview以及數據庫中。目標是在datagridview中進行更改,因此使用按鈕時,更改也會應用到數據庫表中。在每一行中,條碼及其數量都是不同的。如果更改是在datagridview中的所有行中進行的,因此它也將應用於使用按鈕的數據庫中,並且請參閱幫助。從datagridview更新數據庫中的值

這裏是應該在for循環被視爲查詢:

SqlCommand cmd2 = new SqlCommand("update prod_info set [email protected] where [email protected] ", con); 

考慮條形碼作爲列1和item_quantity爲列2。

到目前爲止創建一個for循環我已經試過,但得到錯誤的for循環:

for (int i = 0; dataGridView2.Rows.Count; i++) //getting error here 
      { 
       SqlCommand cmd2 = new SqlCommand("update prod_info set [email protected] where [email protected] ", con); 
       cmd2.Parameters.AddWithValue("@barcode", dataGridView2.Rows[i].Cells[1].Value.ToString()); 
       cmd2.Parameters.AddWithValue("@qty", dataGridView2.Rows[i].Cells[1].Value.ToString()); 
      } 
+0

你到目前爲止嘗試過什麼?一種可能性是將DataGridView綁定到DataTable並使用[SqlCommandBuilder助手類](http://msdn.microsoft.com/zh-cn/library/tf579hcz.aspx)生成插入/選擇/更新/刪除命令,一旦綁定到UI元素,對數據庫的更改將自動進行。 – pasty

+0

以及我想通過使用按鈕進行更改數據庫。我的意思是什麼時候一切都在datagridview中確認,然後使用按鈕更改將被作出 –

+0

這是我已經嘗試到目前爲止的代碼,我得到錯誤的for循環: for(int i = 0; dataGridView2.Rows。 count); i ++) {SqlCommand cmd2 = new SqlCommand(「update prod_info set item_quantity = @ qty where barcode = @ barcode」,con); (「@ barcode」,dataGridView2.Rows [i] .Cells [1] .Value.ToString()); cmd2.Parameters.AddWithValue(「@ qty」,dataGridView2.Rows [i] .Cells [1] .Value.ToString()); } –

回答

0

你應該叫cmd2.ExecuteNonQuery();在你的循環中......否則不會執行sql命令

爲了得到更好的解決方案,你應該在循環之前創建cmd2。還要在那裏添加參數(不分配值)......在循環內只分配值並調用ExecuteNonQuery。

也許最好的解決方案是使用數據綁定和SqlDataAdapter分配UpdateCommand。

剛纔看到有可能是在你的代碼中的錯誤...您使用值從細胞[1]您的參數都 ...

例如: 首先創建一個DataTable ... var dt = new DataTable();

然後將您想要在您的網格中的列添加到DataTable ... dt.Columns.Add(「xyz」);

然後將DataTable附加到您的網格:dataGridView2.DataSource = dt;

現在你應該可以編輯列「xyz」的內容。將值寫入到您創建SqlDataAdapter的數據庫中... var adp = new SqlDataAdapter();

然後設置adp.InsertCommand =新的SqlCommand(...)adp.UpdateCommand =新的SqlCommand(...)

現在你可以調用adp.Update();和網格中的所有值都寫入到db ...對於新添加的行,InsertCommand被調用,並且對於編輯的行UpdateCommand被調用。

+0

其實我想更新單元格[1]的值到數據庫中......行[i]只是定義找到該行並根據條形碼更新數量... 可否請您舉一個數據綁定的例子...? –

+0

請檢查我編輯的答案... – PrfctByDsgn