Vb.net 重新连接断开连接的数据集?

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

我使用的是一个断开连接的数据集,我尝试了几种方法来重新应用到SQL的连接以传回我的更新

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使其更清晰。我现在可以看出,我没有像你提到的那样执行更新/插入。稍后我会再次与您联系,并告诉您我的进展情况。:)