簡體   English   中英

如何將信息從未綁定的datagridview保存到SQL數據庫

[英]How do I save info from an unbound datagridview to SQL database

我已經嘗試了好幾個小時才能在我的datagridview中獲取信息以保存到數據表中。 從進行選擇的組合框中填充datagridview。 我不知道是如何將qty_Ordered轉換為int 我相信一旦有了,它就會起作用。

另外,是否可以使用datagridview的列名而不是Cells[]

foreach (DataGridViewRow row in purchase_Order_ItemsDataGridView.Rows)
    {
        if (!row.IsNewRow)
        {
            SQL = @"INSERT INTO Purchase_Order_Items (Purchase_Order_ID, Part_Number, Qty_Ordered, Work_Order_Number)
        VALUES(@purchase_Order_Id, @part_Number, @qty_Ordered, @work_Order_Number)";

            sqlCommand = new SqlCommand(SQL, DataAccessClass.sql_Connection);

            sqlCommand.Parameters.AddWithValue("@purchase_Order_ID", purchase_Order_Id);
            sqlCommand.Parameters.AddWithValue("@part_Number", row.Cells[1].Value);
            sqlCommand.Parameters.AddWithValue("@qty_Ordered", row.Cells[2].Value);
            sqlCommand.Parameters.AddWithValue("@work_Order_Number", row.Cells[3].Value);

            sqlCommand.ExecuteNonQuery();
        }
    }

你有嘗試過嗎? 公認的權宜之計,但確實將其轉換為int。

sqlCommand.Parameters.AddWithValue("@qty_Ordered", int.parse(row.Cells[2].Value.ToString()));

編輯:此鏈接可能會為您提供更多幫助- 從DataGridViewCell獲取數值?

它處理的方法比上面的解決方案具有更強的魯棒性,當您的值為null時,它將嚴重失敗。

編輯2:看起來上述解決方案還不夠健壯。 下面的代碼更加健壯。

int qtyordered;

if (!int.TryParse(row.Cells[2].Value.ToString(), out qtyordered)
    qtyordered = 0;

sqlCommand.Parameters.AddWithValue("@qty_Ordered", qtyordered);

厭惡的答案將是最好的,因為它可以與您當前的代碼透明地一起工作,但這有點棘手。 您需要公開數據表的列,以便您可以修改類型。 並且,在創建列之后/之后以及開始添加數據之前,您需要執行此操作。

purchase_Order_ItemsDataGridView.Columns[2].ValueType = typeof(int);

您需要在開始填充表格之前但在創建列之后,將其放置在較早的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM