質問者
データベースを更新する際のcommandbuilderのSQR自動生成について

質問
-
使用環境[Visualbasic2005,SQLserver]
vb初心者です。
sekisansystem.mdfに資材マスタというテーブルを構成しており、フォームのデータグリッドビューにデータを取得・追加・削除・更新をかけたい。テーブル定義は、IDと資材名の2列のみです。取得及び追加は簡単に出来たのですが、その他2つの事項についてはcommandbuilderにて自動生成にて対応できると聞いたのですが、
→「updatecommandの動的SQL生成は、キーである列情報を返さないselectcommandに対してはサポートされていません。」
とエラーが出ます・・・。自分が思うに、多分sqlcommandに更新等のSQL文をコーディングしなきゃならないのでは?と薄々感じてはいるのですが、よく分かりません。
例えば更新をする場合の文法を教えていただけないでしょうか?
ちなみにコードは下記のとおりです。よろしくお願いいたします。
Imports System.Data
Imports System.Data.SqlClientPublic Class Form1
Dim sqlDa As SqlDataAdapterPrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
データ更新()
End SubSub データ更新()
Try
Dim conn As New SqlConnection _
("Data Source=.\SQLEXPRESS;" _
+ "AttachDbFilename=|DataDirectory|\sekisansystem.mdf;" _
+ "Integrated Security=True;User Instance=True")
Dim sqlCm As SqlCommand = conn.CreateCommand
sqlDa = New SqlDataAdapter(sqlCm)
Dim sqlBd As New SqlCommandBuilder(sqlDa)
Dim dtTable As New DataTablesqlCm.CommandText = "SELECT * FROM 資材マスタ"
sqlDa.Fill(dtTable)
DataGridView1.DataSource = dtTable
'▼後処理
dtTable.Dispose()
Catch ex As Exception
MessageBox.Show("更新に失敗しました。" + vbCr + ex.Message)
End TryEnd Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
sqlDa.Update(datagridview1.DataSource)
MessageBox.Show("更新に成功しました。")
Catch ex As Exception
MessageBox.Show("更新に失敗しました。" + vbCr + ex.Message)
End Try
End Sub
End Class