2017-04-06 53 views
0

我有一个数据集与数据表与列。无论如何检查是否有任何datatable.Columns添加vb.net

我填的数据集与此代码的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")) 

我真正想要的是什么 - 我有很多的数据集的,我想看看它是否在他们的任何实质性的改变(不添加列的whois不是数据库的一部分)如果没有,不保存到数据库。

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

现在我已经硬编码添加的列以排除它们在检查中,它的工作原理,但那不是一个好方法来维护。另一种方法是制作所有数据集的副本并进行比较,副本中没有添加列。但是我不知道性能时,它的数据集的很多...

像行

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

你的意思是你想看看是否存在某个列名的列?或者如果'DataTable'添加了任何列? – David

+0

我想查看DataTable是否添加了任何列 – Hakan

+0

为什么不直接运行'If语句'?例如; '如果DataTable.Columns.Count> 0 Then'? – David

回答

0

您应该能够使用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 

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

+0

我已经阅读了链接GetChanges(),但我无法找到无论如何用它来找到添加列。你有什么提示吗? – Hakan

+0

你能多解释一下吗?为什么你需要检测一个新的列?你的应用程序会发生什么,需要你这样做?向列添加列并不是我期望经常发生的事情。 – DWRoelands

+0

代码库大,其超过1个开发商,如果有人在将来添加新列不是数据库的一部分,并且不排除在检查之列,该应用程序认为它的变化。 我想如果可能的以避免将来出现错误,如果有人错过排除新列 它适用于排除代码中的列,但它不是我认为的好方法! – Hakan

相关问题