数据集何时应该在vb.net中插入后反映更新的行数

时间:2009-08-25 17:49:31

标签: vb.net dataset insert-update

我有一个sql数据库,并为其中的示例表创建了一个数据集。

数据集是HotelDataSet2,要插入的数据表适配器是Various_itemsTableAdapter。

 MsgBox(HotelDataSet2.various_items.Rows.Count)
 Various_itemsTableAdapter.Insert(Item_nameTextBox.Text, itemcode, PackingTextBox.Text, UomTextBox.Text, PriceTextBox.Text, RemarksTextBox.Text, TaxTextBox.Text, StatusCheckBox.Checked, Rate_inclusiveCheckBox.Checked)
 MsgBox(HotelDataSet2.various_items.Rows.Count)

这总是反映插入之前和之后的相同计数。但是如果我执行此

MsgBox(HotelDataSet2.various_items.Rows.Count)
Various_itemsTableAdapter.Insert(Item_nameTextBox.Text, itemcode, PackingTextBox.Text, UomTextBox.Text, PriceTextBox.Text, RemarksTextBox.Text, TaxTextBox.Text, StatusCheckBox.Checked, Rate_inclusiveCheckBox.Checked)
Various_itemsTableAdapter.Fill(HotelDataSet2.various_items)
MsgBox(HotelDataSet2.various_items.Rows.Count)

它显示新计数为旧计数的+1。所以我得出结论,每当我通过表适配器将一些数据更改为表时,我必须始终重新填充数据集?那有什么用呢?

1 个答案:

答案 0 :(得分:1)

你这是错误的方式。您应该使用DataSet进行更改(即,使用其表创建DataRow并将这些行插入表中),然后从{{{{}}传递相应的DataTable 1}}到DataSet,以便通过调用TableAdapter

上的Update函数将更改保留到数据库
TableAdapter

直接调用tableAdapter.Update(dataSetName); 函数只会将数据插入数据库本身的表中;它对数据的任何本地副本(例如您的Insert)没有任何影响。

作为旁注,尽量避免使用DataSet等语言特定的功能。相反,要显示一个消息框,请尝试调用MsgBox,因为这与语言无关。

修改

为了澄清,执行此操作的正确方法是创建新的MessageBox.Show(...),使用新值填充其列,将DataRow添加到相应的表中,然后将表传递给{ {1}}通过DataRow函数。

例如,我有......

TableAdapter

要插入包含这些值的行,我会这样做:

Update