VB2005 + SQL CommandBuilder使用

データーをストアドからDataTableへ受け取り,DataGridViewに表示 (CommandBuilder使用)

  Dim cn As SqlConnection
  Dim da As New SqlClient.SqlDataAdapter()
  Dim dt As New DataTable

  Private Sub a()

    Dim cmd As New SqlClient.SqlCommand(“stHoge”, cn)
    Try
      cmd.CommandType = CommandType.StoredProcedure
      cmd.Parameters.Clear
      cmd.Parameters.Add(“@ID”, SqlDbType.Int).Value = ID
      da.SelectCommand = cmd
      dt.Locale = System.Globalization.CultureInfo.InvariantCulture
      dt.Clear()
      Dim commandBuilder As New SqlClient.SqlCommandBuilder(da)
      da.Fill(dt)
      dt.Columns(“ID”).ReadOnly = True
      DGV.DataSource = dt
    Finally
     cmd.Dispose()
    End Try

  End Sub

    ‘更新
    Private Sub b()
        da.Update(dt)
        dt.AcceptChanges()
    End Sub

VB2005 DataTableの手動作成

    Private Sub CreateDt()

        Dim dt As New DataTable
        dt.Columns.Add(“ID”, GetType(Integer))
        dt.Columns.Add(“名称”, GetType(String))

       ‘1行まとめて代入する方法
        dt.Rows.Add(0, “A”)
        dt.Rows.Add(1, “B”)
        dt.Rows.Add(2, “C”)

       ‘要素ごとに代入する方法
        Dim row1 As DataRow
        row1 = dt.NewRow
        row1.Item(“ID”) = 0
        row1.Item(“名称”) = “A”
        dt.Rows.Add(row1)
        row1 = dt.NewRow
        row1.Item(“ID”) = 1
        row1.Item(“名称”) = “B”
        dt.Rows.Add(row1)

        With ComboBox1
            .ValueMember = “ID”
            .DisplayMember = “名称”
            .DataSource = dt
            .SelectedIndex = 0
        End With

    End Sub


Updated:
2011-10-09 要素ごとに代入する方法を追加.