テーブルを更新するには?

解決


ABC  2009-06-15 23:07:40  No: 145968

VB.NET2005、SQL Server2000、XPpro

1.DB上の主キーを持たないワークテーブルに対し、SELECTで抽出した結果を取得
2.結果の中からある条件に一致するレコードを更新

というような処理を行いたいのですが、
DataSetを使用した場合、主キーがないテーブルに対しては更新が出来ないというエラーが出てしまいます。

Dim i As Integer
Dim cCmd As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand("SELECT * FROM worktable",DB)
Dim cAdp As System.Data.SqlClient.SqlDataAdapter = New System.Data.SqlClient.SqlDataAdapter(cCmd)
Dim cBld As System.Data.SqlClient.SqlCommandBuilder = New System.Data.SqlClient.SqlCommandBuilder(cAdp)
Dim ds As DataSet = New DataSet

cAdp.Fill(ds)

Dim cDr() As DataRow = ds.Tables(0).Select()

If ds.Tables(0).Rows.Count <> 0 Then
    For i=0 to ds.Tables(0).Rows.Count - 1
        If cDr(i)("FIELD1") = "ABC" Then
            cDr(i)("FIELD2") = ds.Tables(0).Rows(i)("FIELD2").ToString & i
        End If
    Next
    cAdp.Update(cDr) '※エラー発生
End If

※UpdateComanndの動的SQl生成は、キーである列情報を返さないSelectCommandに対してはサポートされていません。

主キーがないテーブルを更新するには、どのような方法を使えばよいのでしょうか?


特攻隊長まるるう  2009-06-16 01:10:35  No: 145969

CommandBuilder を使った UPDATE 文の自動生成は
できませんので、自分で UPDATE 文を文字列で
作った後、SqlCommand.ExecuteNonQuery メソッドで
UPDATE 文を実行します。


ABC  2009-06-19 03:07:18  No: 145970

>特攻隊長まるるう様

UPDATE文を作成するやり方にしました。
(もっと簡単なコーディング方法があれば・・・と思ったのですが)

ありがとうございました。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加