C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 124 を表示中)
■73956 / )  Re[2]: SqlDataAdapterのUpdateコマンドエラー?
□投稿者/ しろくま5 (2回)-(2014/11/17(Mon) 18:15:54)
返信ありがとうございます。

No73955 (魔界の仮面弁士 さん) に返信
> ■No73954 (しろくま5 さん) に返信
>>INSERTをUpdateで行いたく
> INSERT (の SQL 文) を、(SqlDataAdapter の) Update メソッド経由で呼び出すということですね?

はい、そのようになります。


>>ソースを書いているのですが、他のDBの情報をSELECTしてきたDataTableを使い
>>Updateを行うと、正しく追加されません。
> 下記の事例に該当していたりはしませんか?
> http://www.atmarkit.co.jp/fdotnet/dotnettips/532dbfilecopy/dbfilecopy.html

DBへのアクセスはVS内では何も行っておらず、SQL ServerManagement2008を使って行っております。


>>試しにDataTableを自分で生成し、同じカラム名、カラム数にし複数レコードを登録した
>>DataTableを使いUpdateしたところ、正しく登録されました。
> それらの具体的な情報を公開することはできますか?

ライブラリ化などしており、ソース全部そのままでは出せなかったので大まかな流れですが
Adapterへの接続はSELECTとINSERTで分けており、SELECTのあと閉じてます。
そのあとでINSERT用のAdapterを生成し、パラメータを追加し、最終的にDataTableを渡してUpdateメソッドを実行といった流れです。

strConnect = strServer & strUserID & strPassword & strDatabase & dbName

adp = New SqlDataAdapter
connect = New SqlConnection(strConnect)
connect.Open()

adp.SelectCommand = New SqlCommand("select test1, test2 from TESTDB2", connect)
dim ds as new DataSet
adp.fill(ds)
dim dt as DataTable = ds.tables(0)
connect.close()

connect.Open()
adp.InsertCommand = New SqlCommand("INSERT INTO TESTDB1(COL1, COL2) VALUES(@COL1, @COL2)", connect)
adp.InsertCommand.Parameters.Add("@COL1", SqlDbType.NVarChar, 20, "test1")
adp.InsertCommand.Parameters.Add("@COL2", SqlDbType.NVarChar, 20, "test2")

Dim table As New DataTable
table.Columns.Add("test1")
table.Columns.Add("test2")
For i As Integer = 1 To 10
Dim row As DataRow = table.NewRow
row("test1") = "COL1 = " & i
row("test2") = "COL2 = " & i
table.Rows.Add(row)
Next

    adp.Update(table) → 正常に登録
adp.Update(dt) → 登録されない


最後のUpdateについてはどちらか片方しか行っておりません。
返信 編集キー/


管理者用

- Child Tree -