データグリッドビューのメリットでもあるデータベースとのバインドを見てみましょう。
データベースはSQLサーバーExpress(無償)を利用します。
下記のユーザーテーブルと性別テーブルを生成しています。
ユーザーテーブルをバインドしています。
セルに内容を入力し、フォームを閉じるときに更新するようにしています。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0
'SQLサーバーのインポート
Imports System.Data.SqlClient
Public Class Form1
'データベース(SQLサーバー)の定義
Private dbCon As New SqlConnection() 'データベースのコネクション
Private dbCmd As New SqlCommand() 'データベースのコマンド
Private dbDAdpt As SqlDataAdapter 'データアダプター
Private dbDSet As DataSet 'データセット
Private dbCmdBuilder As SqlCommandBuilder 'テーブル更新
'******************************************************************************
'* フォームのロード(イベント処理)
'******************************************************************************
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'データグリッドビューの列見出し(タイトル名,幅)の定義
Dim aryColHeader() As String = {"ユーザーID", "操作者名", "パスワード", "性別", "作成日"}
Dim aryColLength() As Integer = {160, 180, 160, 60, 100}
'データベース接続(Data Source=サーバー名,Catalog=データベース名)
dbCon.ConnectionString =
"Data Source=PUBLIC\SQLEXPRESS;Initial Catalog=dbExpress;Integrated Security=True"
dbCon.Open()
'ユーザーテーブルの検索(SQL文)の設定
Dim strSQL As String = "SELECT user_id, user_name, pass_word, seibetu, renew_date" _
& " FROM exp_user" _
& " ORDER BY user_id"
'ユーザーテーブルの検索
dbCmd = New SqlCommand(strSQL, dbCon)
dbDAdpt = New SqlDataAdapter(dbCmd)
dbDSet = New DataSet()
dbDAdpt.Fill(dbDSet, "Bind_table")
'データグリッドビューにバインド
DataGridView1.DataSource = dbDSet
DataGridView1.DataMember = "Bind_table"
'データグリッドビューの編集
With DataGridView1
'データバインドした場合、列クリアしてはいけない
'.Columns.Clear()
'データグリッドビューのプロパティ
.BackgroundColor = Color.LightGray '背景色
.RowsDefaultCellStyle.BackColor = Color.Honeydew '行の背景色
.AlternatingRowsDefaultCellStyle.BackColor = Color.Ivory '行の交互背景色
'データグリッドビューの列数の設定(データバインドした場合、列数の指定は不要)
'.ColumnCount = 5
'データグリッドビューの列情報の設定
For i As Integer = 0 To .Columns.Count - 1
.Columns(i).HeaderText = aryColHeader(i) '列ヘッダーのタイトル
.Columns(i).Width = aryColLength(i) '列の幅
'列ヘッダーのタイトルフォント指定
'-----以降の設定は<その1>と同じなので省略---
Next
End With
End Sub
'******************************************************************************
'* フォームのクローズ(イベント処理)
'******************************************************************************
Private Sub Form1_FormClosing(ByVal sender As Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs)
Handles Me.FormClosing
'ユーザーテーブル更新
dbCmdBuilder = New SqlCommandBuilder(dbDAdpt)
dbCmdBuilder.GetUpdateCommand()
dbDAdpt.Update(dbDSet.Tables("Bind_table"))
'データベース解放
dbCmd = Nothing
dbCon.Close()
End Sub
End Class