■73956 / inTopicNo.3) |
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についてはどちらか片方しか行っておりません。
|
|