c# - 仅使用新记录进行更新时,DataTable.Load 方法不起作用

标签 c# sql vb.net datatable

我有一个 SQL 表需要用另一个表中的数据更新。

如果有新记录,它会工作并插入新记录,但如果有对现有记录的更新,它不会更新记录中的名称。

例子是VB.Net的,欢迎大家用C#代码回复。

        Dim workMembers As DataTable = New DataTable()
        Dim extMembers As New DataTableReader(GetExternalMembers())

        Using con As New SqlConnection(c.ConnectionString)
            Using sda As New SqlDataAdapter("Select id, name from members", con)
                sda.Fill(workMembers)
                workMembers.Load(extMembers, LoadOption.PreserveChanges)
                sda.Update(workMembers)
            End Using
        End Using

最佳答案

workMembers.Load 从外部表加载记录并将它们标记为未更改,因为表中已经存在一条记录。参见 DataTable.Load Method , 备注下的第二段。您要么需要遍历记录并使用 SetModified 方法将每个修改的记录设置为 Modified。 TnTinMn 是正确的,您的表定义需要将主键附加到定义以支持合并。参见 DataTable.PrimaryKey Property

关于c# - 仅使用新记录进行更新时,DataTable.Load 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31072568/

相关文章:

c# - 在每个项目的基础上同步线程

SQL - 返回至少有一个值为 'Y' 的所有行

sql - sqlplus 中的 Oracle 输出

sql - Postgres Like 语句无法正确阅读

.net - 在 .NET 中模拟 VBA 算法

c# - 将变量发送到 Web API 方法

c# - Web.config 转换移动命名空间声明

javascript - 正则表达式电话号码验证

c# - 将 Windows 运行时组件与 Javascript UWP 应用程序一起使用时出现 "Unknown Runtime Error"

vb.net - 检查 Internet 连接 vb.net