【问题标题】:Anyway to Check if any datatable.Columns is added vb.net无论如何检查是否添加了任何 datatable.Columns vb.net
【发布时间】:2017-09-01 13:39:30
【问题描述】:

我有一个带有列的数据表的数据集。

我在 Winforms 中用这段代码填充数据集

    myAdapter = New SqlDataAdapter("Select * from users", strSqlConn)
    myAdapter.Fill(dsDataset, "Users")
    dcPk(0) = dsDataset.Tables("Users").Columns("FirstName")
    dcPk(1) = dsDataset.Tables("Users").Columns("LastName")
    dsDataset.Tables("Users").PrimaryKey = dcPk

是否无论如何要检查是否添加了任何 datatable.Columns vb.net?稍后在代码中例如添加“金额”

dsDataset.Tables("Users").Columns.Add("amount", System.Type.GetType("System.Int32"))

我真正想要的 - 我有很多数据集,我想看看它们是否有任何真正的变化(没有添加不属于数据库的列)如果没有,不要保存到数据库。

当我使用 GetChanges 时,如果我添加了列,我会说我有更改,但应该排除添加的列。

现在我已经对添加的列进行了硬编码以在检查中排除它们,它可以工作,但这不是维护的好方法。另一种方法是复制所有数据集并进行比较,在副本中没有添加列。但是当它有很多数据集时,我不确定性能......

喜欢成行

  If row.RowState = DataRowState.Added Then
        'Do something
  end if 

【问题讨论】:

  • 你的意思是要查看某个列名的列是否存在?或者DataTable 是否添加了任何列?
  • 我想看看DataTable有没有添加列
  • 为什么不直接运行If statement?例如; If DataTable.Columns.Count > 0 Then?
  • 我已经编辑了我的问题,让我更清楚我想要什么。例如,我发现添加了“金额”列

标签: vb.net datatable dataset


【解决方案1】:

您应该可以使用 DataTable 对象的GetChanges() 方法,就像这样...

dim t as DataTable = MyDataTable.GetChanges()
If t IsNot Nothing then
' There were changes to the table
Else
' There were no changes to the table
End If

请务必阅读我链接的文档页面,以确保它符合您的要求。

【讨论】:

  • 我已经阅读了 GetChanges() 链接,但无论如何我都找不到使用它来查找添加的列。你有什么提示吗?
  • 你能再解释一下吗?为什么需要检测新列?在您的应用程序中会发生什么需要您执行此操作?向表中添加列并不是我希望经常发生的事情。
  • 代码库很大,并且它的开发人员不止 1 个,如果将来有人添加一个不属于数据库的新列并且不排除检查中的列,应用程序会认为它发生了变化。如果有人错过排除新列,我希望它可以避免将来出现错误它适用于排除代码中的列,但我认为这不是一个好方法!。
  • 啊。您没有应用程序问题;你有源代码控制问题。您是否使用源代码控制系统? (Accurev、Git、Subversion 等)
  • 这正在快速接近 StackOverflow 之外的东西,但是您的构建过程可能应该包括一个步骤,将当前构建的数据库与上一个构建的数据库进行比较,并生成一个脚本来实现变化。
猜你喜欢
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 2014-07-09
  • 2016-01-16
  • 2015-10-27
相关资源
最近更新 更多