2017-04-06 45 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

相關問題