Vb.net 重新连接断开连接的数据集?
我使用的是一个断开连接的数据集,我尝试了几种方法来重新应用到SQL的连接以传回我的更新Vb.net 重新连接断开连接的数据集?,vb.net,Vb.net,我使用的是一个断开连接的数据集,我尝试了几种方法来重新应用到SQL的连接以传回我的更新 Public Function PassBackFilledDataSet(ByVal dsUpdated As DataSet, _ ByVal queryString As String) Dim dsData As New DataSet Dim strRowCount As String Using
Public Function PassBackFilledDataSet(ByVal dsUpdated As DataSet, _
ByVal queryString As String)
Dim dsData As New DataSet
Dim strRowCount As String
Using connection As New SqlConnection(ConnectionString())
Using adapter As New SqlDataAdapter() With {.SelectCommand = New SqlCommand(queryString, connection)}
adapter.Fill(dsData)
dsData = dsUpdated.Copy
strRowCount = dsData.Tables(0).Rows.Count
MsgBox("dsData" & strRowCount)
' adapter.Update(dsData.Tables(0))
dsData.Tables(0).AcceptChanges()
adapter.Update(dsData.Tables(0))
End Using
End Using
End Function
但我不太明白为什么SQL端没有更新,而断开连接的数据集却在更新
任何指点都很好。提前谢谢。为什么不执行
adapter.Update(dsUpdated.Tables(0))
?这不是同样的操作吗?adapter.Update(dsData.Tables(0))DbDataAdapter.Update
基于表中每个数据行的RowState
,执行正确的命令(插入、更新或删除),并且DataTable.AcceptChanges
将所有行标记为RowState.Unchanged
,因此DbDataAdapter.Update
不做任何操作。如果您的dsUpdated.Tables(0)
正确地保持了RowState
,结果将不同。而且,我错过了重要的一点,您的adapter
缺少UpdateCommand
,InsertCommand
和DeleteCommand
。看见假设数据库(SQL Server)中的表具有主键,并且queryString
包含键列,则自动生成这些内容的最简单方法是在adapter.Update(dsUpdated.Tables(0))
之前将cb设置为新的SqlCommandBuilder(适配器)。感谢Ripple使其更清晰。我现在可以看出,我没有像你提到的那样执行更新/插入。稍后我会再次与您联系,并告诉您我的进展情况。:)