トップ回答者
Visual Basic 2005 DataAdapter経由でSQLサーバーにデータを書き込めない

質問
-
VB6ADOからの移行を試みています、ADOでできたAddNewメソッドとUpdateメソッドを使ってデータの挿入を試みているのですがデータセットのテーブルの中に追加されているのは確認できるのですが、実際のデータベースには反映されません。列数がINSERT文を書くと見にくくなるのでこの方法を使いたいと思います。
Using CT As New SqlConnection(cnnStr)
CT.Open()
Dim Da As New SqlDataAdapter("SELECT TOP 1 * FROM TB1", CT)
Dim DS As DataSet = New DataSet
Da.Fill(DS, "TB1")
Dim RW As DataRow = DS.Tables("TB1").NewRow
RW("JGCODE") = "0091"
RW("SECODE") = "099999"
RW("GZCODE") = "000999999"
RW("SHIYOU") = 1.99
RW("UPDDATE") = Now()
DS.Tables("TB1").Rows.Add(RW)
DS.AcceptChanges()
Da.Update(DS, "TB1")End Using
回答
-
DS.AcceptChanges()
また、SqlDataAdapterにINSERT文、DELETE文、UPDATE文のSQL文を設定していないようです。CommandBuilderなどを使って設定してください。
以下、参考まで
http://hatsune.wankuma.com/seminer/tokyo20/25.PNG
更に、上記参考にあるように全体をトランザクションで囲んでください。ADO.NETのUpdateメソッドは内部的にINSERT文、DELETE文、UPDATE文を実行します。その判断にはDataRowの状態により自動的に判断しまので、INSERT文、DELETE文、UPDATE文が組み合わされて実行される可能性があるのでトランザクション処理が必要です。
http://blogs.wankuma.com/hatsune/- 回答としてマーク sk7474 2009年4月9日 9:25
すべての返信
-
DS.AcceptChanges()
また、SqlDataAdapterにINSERT文、DELETE文、UPDATE文のSQL文を設定していないようです。CommandBuilderなどを使って設定してください。
以下、参考まで
http://hatsune.wankuma.com/seminer/tokyo20/25.PNG
更に、上記参考にあるように全体をトランザクションで囲んでください。ADO.NETのUpdateメソッドは内部的にINSERT文、DELETE文、UPDATE文を実行します。その判断にはDataRowの状態により自動的に判断しまので、INSERT文、DELETE文、UPDATE文が組み合わされて実行される可能性があるのでトランザクション処理が必要です。
http://blogs.wankuma.com/hatsune/- 回答としてマーク sk7474 2009年4月9日 9:25