mysql - 将 DataRow 复制到另一个表 (vb.net/mysql)

标签 mysql vb.net datatables dataset

我的项目中有两个相同的数据表,一个是采购订单,另一个是模板数据表。 (即:用户在原始表中创建新行时可以选择模板。)

“保存模板”按钮运行:

Public Shared Sub AddPO_as_Template(Name As String, DR As DataRow)
    Dim ds As New SomeDataSet
    Dim ta As New SomeDataSetDataSetTableAdapters.PurchaseOrderTemplatesTableAdapter
    Try
        DR("Name") = Name
        ds.PurchaseOrderTemplates.ImportRow(DR)
        ta.Update(ds)
    Catch ex As Exception
        CommonRoutines.ShowExceptionDialog("Could not add the Template, an error occured.", ex.Message)
    End Try
End Sub

此特定代码引发并发冲突。我认为发生这种情况是因为 ID 列是自动递增的,并且我使用原始行的 ID。

现在;第二个表 (PurchaseOrderTemplates) 中的 ID 一点也不重要,因此它可以是任何内容。我尝试过设置 -1、dbnull、""等...数据库在更新命令上不断抛出异常。

如何重置 ID 列,使其正常添加? (我知道我可以创建一个新行并移动所有列,但这似乎很长。)

谢谢

编辑:复制行(通过.itemarray)工作正常,但我需要以某种方式从表中获取自动增量值以避免并发冲突。

Edit2:所以我按照下面的答案让它工作,但我仍然很想知道如何让导入行像这样工作。

最佳答案

按如下方式添加行有效。

 Public Shared Sub AddPO_as_Template(Name As String, DR As DataRow)
    Dim ds As New SomeDataSet
    Dim ta As New SomeDataSetTableAdapters.PurchaseOrderTemplatesTableAdapter

        Dim NewRow As DataRow
        NewRow = ds.PurchaseOrderTemplates.NewRow
        NewRow.ItemArray = DR.ItemArray
        NewRow("Name") = Name
        NewRow("ID") = 1
        ds.PurchaseOrderTemplates.Rows.Add(NewRow)
        ta.Update(ds)
End Sub

MySQL数据库忽略ID列中的值,只设置自己的自动增量值。

关于mysql - 将 DataRow 复制到另一个表 (vb.net/mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38682837/

相关文章:

javascript - 如何从过滤函数改进自制SQL语法?

vb.net - 在ActiveReports中设置水印

asp.net - 选择性验证

jQuery 选择不显示 <select> 选项

jquery - Sails 中的服务器端分页与数据表

mysql - 通过多个连接从 MySQL DB 中查找最喜欢的项

mysql - 为什么sql查询不按时间戳顺序输出左连接数据?

vb.net - 将空白条目排序到 LINQ 查询的底部

jquery - 数据表 - 特定列上的搜索框过滤器

php - 当我点击链接时,我需要动态地一次显示 10 条 mysql 记录