DataGridViewにMySQLからデータを取得[VB]

ちょっとVB 2005からMySQLのデータを使うということをやりたいのでわかった順番にいろいろと書いていこうと思います。

今回はまずDataGridViewをつかってMySQLのデータベースからテーブルの中身を取得し表示しようと思います。
サンプルにつかったデータは日本郵便の大阪府の郵便番号データです。

と思ったらphpMyAdminから郵便番号情報のインポートを説明するサイトがありました。

で、「japanpost」というデータベースに「zipcode」というテーブルを作成しそこにデータをインポートしました。
特にデータベースの内容は問わないのでこれにあわせる必要はありません。

追記:データベースの照合順序はsjis_japanese_ciにします。UTF8ではWindowsでODBCから開いたときに文字化けしました。

それと、ODBC経由でMySQLに接続するデータベースドライバ「MySQL Connector/ODBC 5.1」をここからダウンロードしインストールしておきます。

ではプログラムの作成をします。

"DRIVER={MySQL ODBC 5.1 Driver};SERVER=(サーバーのアドレス);DATABASE=(データベース名);UID=(ユーザー名);PWD=(パスワード);OPTION=3"
の様な接続文字列を作りサーバーにODBCで接続し、

"SELECT * FROM zipcode"
というSQLを発行します。
(ここを変えることで違うクエリを発行できます。)

そしてその結果を
DAdapter.Fill(DSet, "テーブル名")
Fill関数を使ってDataSetに(テーブル名)という名前のテーブルで登録します。
このテーブル名はプログラム上に作成されるテーブルなのでMySQLサーバーでのテーブル名とは異なるものでも構いません。

最後に
DataGridView1.DataSource = DSet.Tables("テーブル名")
でDataSetの(テーブル名)というテーブルをDataGridViewのデータソースに指定します。

具体的なコードは以下を参照してください。
サーバーアドレス「192.168.1.50」にユーザー名「test」パスワード「testpass」で接続し、
データベース「japanpost」のテーブル「zipcode」を取得しDetaGridViewに表示するサンプルです。

実行してボタンを押した結果
sqltest-form1-exec.jpg

「Form1」に以下のようにコントロールを配置します。

「DataGridView1」という名前でDetaGridViewを(濃い灰色の枠)
「Button1」という名前でButtonを作ります(「実行」というボタン)
sqltest-form1.jpg

Form1のコード

<code>Public Class Form1
    Dim DSet As New System.Data.DataSet
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ConnectionString As String = "DRIVER={MySQL ODBC 5.1 Driver};" &amp; _
                                            "SERVER=192.168.1.50;" &amp; _
                                            "DATABASE=japanpost;" &amp; _
                                            "UID=test;PWD=testpass;OPTION=3"

        Dim connection As New System.Data.Odbc.OdbcConnection(ConnectionString)
        connection.Open()

        Dim SQLTest As String = "SELECT * FROM zipcode"
        Dim DAdapter As New System.Data.Odbc.OdbcDataAdapter(SQLTest, connection)

        DAdapter.Fill(DSet, "zipcode")
        DataGridView1.DataSource = DSet.Tables("zipcode")

        connection.Close()
    End Sub
End Class</code>

One Comment

  1. kato より:

    参考になりました。
    他のサイトを巡ってやっとたどり着きました。

コメントを残す

メールアドレスが公開されることはありません。

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

*