我无法使用DataSet从我的代码更新数据库。我正在使用SQL Server 2008和Visual Studio 2008.这是我到目前为止所做的。
我在SQL Server中创建了一个名为MyTable的表,它有两列:id nchar(10)和name nchar(50)。
然后我在我的VB.net项目中创建了一个数据源,该数据源由该表组成,使用数据集向导并调用此数据集MyDataSet。
我在点击按钮上运行以下代码:
Try
Dim myDataSet As New MyDataSet
Dim newRow As MyDataSet.MyTableRow = myDataSet.MyTable.NewMyTableRow
newRow.BeginEdit()
newRow.id = "1"
newRow.name = "Alpha"
newRow.EndEdit()
myDataSet.MyTable.AddMyTableRow(newRow)
myDataSet.AcceptChanges()
Catch ex As Exception
MsgBox(ex.Message)
End Try
当我运行它并检查SQL Server中的行时,它返回0行
我错过了什么?如何将数据集中的这些行/保存更改添加到数据库?我见过其他使用TableAdapter的例子,但我认为我不想这样做,我想我应该能够使用DataSet来实现这一点。我错了吗?
非常感谢帮助!
答案 0 :(得分:3)
您必须在DataAdapter()
上调用Update方法MyDataAdapter.Update(MyDataSet)
当然,您必须使用必要的命令创建DataAdapter或TableAdapter,以将更改写入数据库。
DataSet是内存/断开连接的“数据库”。
DataAdapter是与DataBase通信的小部件。对于不同的数据库有不同的DataAdapter,对于SQL Server,使用SqlDataAdapter。
调用AcceptChanges会将所有更改标记为已更改,因此当您使用dataadapter更新数据库时,更改将不会写入数据库。
如果要将数据保存到数据库(ADO.NET方式),将必须使用DataAdapter或TableAdapter。
答案 1 :(得分:2)
请勿致电AcceptChanges
,这只会重置DataTable
上的所有更改跟踪信息,以表明这些行是最新的。
DataSet
本身不进行任何数据库交互。您需要使用正确的DataAdapter
(在这种情况下是您说不想使用的TableAdapter
)并通过调用Update
来保存表格。