2017-04-06 11 views
0

データテーブルにColumnsを持つデータセットがあります。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文を実行しないのはなぜですか?例えば; '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

関連する問題