2011-02-09 45 views
1

我使用DataSet設計器來創建FTWDataSet,它包含SQLExpress數據庫中的AlarmText表。到目前爲止,我的表單只包含Datagridview1。下面的代碼成功地顯示了AlarmText表格的內容加上一個添加的複選框列(我將使用僅顯示數據填充該列,並且這裏不是問題)。如何從修改的數據表更新SQL表?

Dim ta As New FTWDataSetTableAdapters.AlarmTextTableAdapter 
    Dim dt As New FTWDataSet.AlarmTextDataTable 
    ta.Fill(dt) 
    DataGridView1.DataSource = dt 

    'create a new Bool column in the datatable 
    dt.Columns.Add("NewCol", (New Boolean).GetType) 

我還需要做什麼才能使用DataGridView編輯和保存AlarmText表中的值?

回答

0

以下是關於此主題的簡短MSDN walkthrough

一些注意事項:

  • 你不應該需要綁定源堅持更改回數據庫。
  • 爲了使表格適配器可以訪問表單中的其他過程,請將其設置爲表單範圍(a.k.a.成員)變量而不是方法範圍,如示例中所示。
  • 如果您使用數據集設計器創建了Dataset,並且您不是從簡單的表格或視圖獲取原始數據,那麼您的適配器將不知道如何更新原始數據庫中的任何內容。在這種情況下,您必須手動配置UPDATE命令。有關參考,請參閱上面鏈接中的TableAdapter更新命令部分。

我還應該提到,我避免ADO.Net中的TableAdapter像瘟疫一樣。理論上他們非常方便和強大。實際上,它們中的很多(尤其是Oracle提供商的)都是越野車,如果它們不能正確工作,那麼就完全搞砸了。

如果你只從一個底層表中取出,適配器應該可以正常工作(所以暫時忽略我的虛構建議)。這可能是因爲在代碼中添加額外的列會破壞適配器(因爲數據庫表中沒有相應的列)。

+0

是的,我認爲會涉及一個表適配器和綁定源。但是我沒有綁定源,並且我所展示的代碼(Load事件)中引用的表適配器無法從任何其他過程訪問。 – John 2011-02-09 20:22:33