VB.NETでMySQLに接続

Pocket

こんにちは!すでに夏バテしつつある、大内です。

今回はVisual Studio2012を使ってデータベースに接続、表示します。

Visual Studio2012 .NET Frameworkバージョン4.5
MySQLバージョン5.6.19
MySQLを利用するには参照の設定画面で、「MySql.Data.dll」の追加が必要です。

MySQLの設定はこのようになっています。

スクリーンショット_060414_011446_PM

先にtestデータベースにusersテーブルname、age、telカラムを作成しておきました。

1.接続文字列を作成する

接続文字列にはデータベースに接続するために必要な情報を与えます。・どのサーバを使うか・ポート番号・ユーザ名・パスワード・データベース名などです。MySQLの設定にそって設定します。

接続文字列を作成するためにMySqlConnectionStringBuilderクラスを使います。情報をセットしたら、接続文字列を返す操作をToStringメソッドで行います。さらに接続するための一連の流れをConStrという変数にセットしておきます。

私はこのあたりが理解しづらかったのでこのようにイメージしました。例えば、あなたはAさんに電話をかけようとしています。Aさんに電話をかけるには電話番号が必要です。もしかしたら、またAさんに電話をかける機会があるかもしれません。その都度、電話番号を調べてボタンを押してという動作を繰り返すのは面倒です。なので、電話帳に登録しておきましょう!

[html]
Imports MySql.Data.MySqlClient
Public Class Form1
Private Sub Form1_Load(sender  As Object, e As EventArgs) Handles MyBase.Load
‘ 1.接続文字列を作成する
Dim Builder = New MySqlConnectionStringBuilder()
‘ データベースに接続するために必要な情報をBuilderに与える
Builder.Server = "localhost"
Builder.Port = 3306
Builder.UserID = "root"
Builder.Password = "root"
Builder.Database = "test"
Dim ConStr = Builder.ToString()
[/html]

2.データベースに接続する

MySqlConnectionクラスを使います。接続するために必要な接続文字列をConnectionStringプロパティに設定します。接続文字列は先ほど作りましたね。Openメソッドで繋ぎます。

[html]
‘ 2.データベースに接続するための準備をして、実際につなぐ
Dim Con As New MySqlConnection
Con.ConnectionString = ConStr
Con.Open()
[/html]

3.データベースからデータを取得する

今回はtestデータベースのusersテーブルのデータを表示させたいので、データを取得するSQL文を作ります。

[html]
‘ 3.発行するSQL文を作成する
Dim SqlStr = "SELECT * FROM users"
[/html]

MySqlDataAdapterクラスを使います。データベースからデータを読み込んで取得するためにSQL文とデータベース接続情報を渡します。

[html]
‘ 4.データ取得のためのアダプタの設定
Dim Adapter = New MySqlDataAdapter(SqlStr, Con)
[/html]

データアダプタで取得したデータの結果をFillメソッドを使って、DataSetにセットします。DataSetは箱のようなものです。

[html]
‘ 5.データを取得し、セットする
Dim Ds As New DataSet
Adapter.Fill(Ds)
[/html]

4.DataGridViewに表示する

今回はデータベースの内容をDataGridViewに表示させたいので取得したデータをDataSourceプロパティに与えます。DataSetには先ほどSQL文を使って取得したusersテーブルがセットされているのでそれを設定します。なお、Tablesには引数が必要です。今回はテーブルを一つしか作成していないので0としています。

[html]
‘ 6.DataGridViewに取得したデータを表示させる
DataGridView1.DataSource = Ds.Tables(0)
[/html]

5.データベースの切断

[html]
‘ 7.データベースの切断
Con.Close()
End Sub
End Class
[/html]

実行結果はこのようになりました。お疲れ様でした。
※実際に使用するには例外処理が必要となります。

スクリーンショット_060414_042035_PM

全コード

[html]
Imports MySql.Data.MySqlClient
Public Class Form1
Private Sub Form1_Load(sender  As Object, e As EventArgs) Handles MyBase.Load
‘ 1.接続文字列を作成する
Dim Builder = New MySqlConnectionStringBuilder()
‘ データベースに接続するために必要な情報をBuilderに与える
Builder.Server = "localhost"
Builder.Port = 3306
Builder.UserID = "root"
Builder.Password = "root"
Builder.Database = "test"
Dim ConStr = Builder.ToString()

‘ 2.データベースに接続するためのコネクションを準備して、実際につなぐ
Dim Con As New MySqlConnection
Con.ConnectionString = ConStr
Con.Open()

‘ 3.発行するSQL文を作成する
Dim SqlStr = "SELECT * FROM users"

‘ 4.データ取得のためのアダプタの設定
Dim Adapter = New MySqlDataAdapter(SqlStr, Con)

‘ 5.データを取得
Dim Ds As New DataSet
Adapter.Fill(Ds)

‘ 6.DataGridViewに取得したデータを表示させる
DataGridView1.DataSource = Ds.Tables(0)

‘ 7.データベースの切断
Con.Close()
End Sub
End Class
[/html]

投稿者紹介

大内 みさき
大内 みさき
2014年入社。サポートエンジニア→コーポレートスタッフ。

サポートエンジニア時代はWebサイト開発やカスタマーサポート業務に携わっていました。現在はバックオフィスが中心です。

年に2回程度、海外旅行をします。

2件のコメント

  1. VBのボタンをクリックしたらデータベースにクリックした時間を記入できるようなプログラムって簡単にかけるものですか?

  2. すいません、最近MySQLのデータをGridViewに表示するプログラムを作成していて、色々なサイトを見たところ、どのサイトもここと同じようなソースだったのでコピペしても表示はされませんでした。

    ただ、最後のGridView.DataSource = DataSet.Tables(0)のあとに
    GridView.DataBind()を追記したら動きました、DataBindは必須なんでしょうか

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください