- PR -

DataAdapterクラスのUpdateメソッドについて

1
投稿者投稿内容
未記入
会議室デビュー日: 2004/04/02
投稿数: 3
投稿日時: 2004-04-02 16:32
質問です。今、VB.NETでSqlサーバのデータをプログラムから更新したいのですが、うまくいきません。
具体的には、Windowsフォームから画面入力されたデータをDataSet型の変数に格納して、その格納されたデータをそっくりそのままDBに更新したいのです。
今までは以下のソース等を試していました。

Private Sub UPDATE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles UPDATE.Click
'画面入力されたデータをDataTableに格納
Dim inputDt As New DataTable
inputDt = DataGrid1.DataSource

Dim ds As New DataSet

ds.Tables.Add(inputDt)

Dim _DbUpdate As clsDbUpdate = New clsDbUpdate
_DbUpdate.DbUpdate(ds)
End Sub


Public Sub DbUpdate(ByVal ds As DataSet)
Dim cn As New SqlClient.SqlConnection
Dim da As New SqlClient.SqlDataAdapter

'接続文字列を格納
cn.ConnectionString = "Server=okumura;Trusted_Connection=yes;database=WeekRateDB"

'接続開始
cn.Open()

'DBを更新
da.Update(ds)

'接続終了
cn.Close()
End Sub


この結果として、da.update(ds)の部分でエラーが発生し、
「DataSetにDataTableが存在しない」
といわれます。
「ds.Tables.Add(inputDt)」の部分でDataTableは追加しているつもりなのですが。

何かわかる方がいらっしゃいましたら、ご指摘等お願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-04-02 17:11
う〜ん、難解・・・


inputDtを、宣言時にNewしていますが、DataGrid1.DataSourceを参照させるので、Newする必要はありません。Newは実体が作られます。参照は、実体がなくても出来ます。


データテーブルは1つだけなら、データセットではなく、データテーブルを引数としたUpdateメソッドを呼び出せばよいのでは?


UpdateCommandを生成/参照しているところがないのですが、その部分はどうなっていますか?
1

スキルアップ/キャリアアップ(JOB@IT)