VB.NETでMySQLに接続してデータグリッドに表示【初心者向】

VB.NETでMySQLに接続してデータグリッドに表示【初心者向】

VB.NETを使ってMySQLからデータを取得してデータグリッドに表示するまでを休日に試してみました。

といっても、朝一、Visual Studioのインストール、朝食、朝から子供の送り迎え、昼食、Huluの映画(猿の惑星)消化、洗車、昼寝をして18:00にはデータが表示できていました。

僕は、VB.NETに関してははっきり言って、詳しくありません。

社内SEをしていた頃に、それなりのもの(業務で使えるもの)を何か作ったのですが、思い出せませんでした。

ただ、ITエンジニアとして、他の言語や環境作りはちょくちょくやってきましたので、ある程度の勘はあります。

僕が調べた流れがわかるだけでも、初心者の方がこれからプログラムを学ぶことに対して、役に立てばといいと思っています。

ちなみに、ITエンジニアの本職を離れて、2年以上経過しています。

で、この記事は有益な外部サイトのリンクを貼って詳しく書いてないところが多々あります(;^_^A

参考サイトのままでは、動かなかったところは記述しています。

とりあえず、こんな感じで調べているというのも、わかればいいと思います。

僕が、今日やったことは次の2つです。

  • フォームにボタンとテキストボックスを追加
  • MySQLのデータをデータグリッドに表示

まずは、フォームアプリケーションを作るために、Visual Studioのインストールからはじめます。

Visual Studioのインストール

Visual Studioはマイクロソフトの開発環境です。VB.NETだけでなく、C#での開発などもできる、統合開発環境です。

JAVAを使ったことがある人なら、Eclipseという開発環境を使っている人が思います。EclipseもJavaだけでなく、他の言語にも対応しています。

早速、Visual Studioをインストールしますが、無償で使える「Microsoft Visual Studio Community 2019」をインストールしました。

インストールURL:https://visualstudio.microsoft.com/ja/vs/

フォームアプリケーション作成

詳細は割愛しますが、こんな流れで作ります。

1.適当な名前でプロジェクトを作成。
2.画面上のプロジェクト→フォームの追加
3.画面左のツールボックスからボタンとテキストボックスの配置
4.ボタンを押したら、テキストボックスに「Hello World」を表示

まずは、「Hello World」からでしょう、ということですぐに作れると思ったのですが、ちょっとつまずきました。

1.適当な名前でプロジェクトを作成

プロジェクトは「hajimete」という名前を付けました。

練習用なので、なんでも構いません。

2.画面上のプロジェクト→フォームの追加

ボタンやテキストボックスを配置するには、フォームを追加する必要があります。

メニュー(画面上部)のプロジェクトからフォームの追加をクリックして、フォームを追加します。

3.画面左のツールボックスからボタンとテキストボックスの配置

Visual Studioの左端に「ツールボックス」というのがあります。

そこから、ボタン(Button)とテキストボックス(TextBox)を追加しました。

MEMO
ツールボックスが表示されてない場合は、「ウィンドウ→ウィンドウレイアウトのリセット」で、ウィンドウが初期化され表示されます。

4.ボタンを押したら、テキストボックスに「Hello World」を表示

今回は単純に、ボタンを押したら、テキストボックスに「Hello World」という文字を表示するだけの動作です。

フォームのデザイン画面から、追加したボタンをダブルクリックすると、ソースコードが表示されます。

そのソースコードに、次を追加しただけです。

tmsg.Text = "Hello World"

tmsgというのは、テキストボックスの名前ですね。そして、「.Text」というのを追加しないと、正しく文字列がセットされません。

TextはVBでいうところの、プロパティですね。ソースから動的にプロパティをセットしています。

つまずいたところ

「プロジェクト→プロパティ」からスタートアップオブジェクトをForm1(今回のフォーム名はデフォルトのForm1)に設定しないと、コンパイルエラーとなります。

「Sub Mainがみつかりません」みたいなエラーです。

VB.NETからMySQLへ接続

僕の他のサイトでは、WordPressからPHPでサーバー上のMySQLへ接続して、検索画面から一覧を表示するプログラムを作っています。

今回は、VB.NETからMySQLへ接続してみます。

但し、今回はローカル環境(このPC)へMySQLをインストールして、接続します。

サーバー上のMySQL接続はまた今度したいと思います。

参考にしたサイト:https://www.dbonline.jp/mysql/install/

MySQLのインストール~環境変数の設定は、上記サイトを参考にしました。

このページで追記することはありません。非常に参考になります。

MEMO
MySQLのインストールには、Oracleへのユーザー登録が必要になるかもしれません。

MySQLへデータを追加

MySQLのインストールが終わっただけでは、VB.NETから参照したいデータがありません。

「データを1から作らないとダメなの?」

それは、メンドクサイですね。

今回は、MySQLのサンプルデータを使うことにしました。

参考にしたサイト:https://qiita.com/kuwazzy/items/5cc0a3bc9d5ceec528e6

「インストールが終了するとMySQL Workbenchが起動します・・・」のところからでOKです。

MySQLをインストールしたら、勝手にワークベンチというのが起動されています。

僕の場合は一旦終了させて、スタートボタンから「MySQL WorkBench 8.0 CE」を起動したら、上記参考サイトと同じ画面になりました。

後は、上記サイトの通りでOKでした!

VB.NETのサーバーエクスプローラーにデーターベース追加

Visual Studioには、サーバーエクスプローラーというのがあり、ここにMySQLのサンプルデータベースを登録することによって、データの中を見ることができます。

他にも何かできそうですが、今のところはよくわかっていません。

データベースのデータを参照するツールを知らないなら、設定しておいた方がいいです。

①:下図の赤枠をクリック

ser-db-add

②:接続情報を設定

Server name:このPCにインストールしたMySQLへ接続するのでlocalhostとなります。

User name:ユーザーと特に追加してないので、今回はrootを利用します。

Password:MySQLをインストールしたときに作ったrootのパスワード。

Database name:「Sakila」というのは、MySQLのサンプルデータベースです。

③:データを表示してみる

下図のように、actorテーブルを右クリック→データの取得をクリック

ser-data-get

データが表示されましたね。

ser-data-view2

これで、サンプルデータのデータを参照することができます。

僕が作ったデータではないので、なんとなくモザイクをかけています。

VB.NETからMySQLのデータを取得して表示

さぁ、いよいよ、MySQLのデータをVB.NETから取得して、フォーム上の表示します。

表示するのは、VB.NETのデータグリッドというのを使います。

コントロールを追加するだけで、SQL文で取得したデータが一覧で表示されます。

そこも、含めて、以下の参考サイトをコピペしただけです。

参考サイト:VB.NETでMySQLに接続

参照設定の追加

上記ソースだけではコンパイルエラーとなります。

まずは、参照設定を追加します。

「プロジェクト→参照の追加」から、次の2つを追加します。

参照設定追加

MySql.DataとSystem.Dataです。

MySql.DataはMySQLのインストールで追加されます。もし、表示されないなら、意図的に外した可能性があります。

ソースの追記

ソースは、次の一文を追記します。

Imports System.Data

情けないですが、上記一文を追記せずに、コンパイルエラーとなり悩んでいました。

「Imports System.Data」を追記しないと、次のところでコンパイルエラーとなります。

Dim Ds As New DataSet

「DataSetが定義されてないよ」というエラーです。

参照はできるように設定したけど、ソース上で使えるようにしてない(Importしてない)からでした。

ソースの修正

ソースは二カ所修正しました。

①:MySQL接続先の変更

Builder.Server = "localhost"
Builder.Port = 3306
Builder.UserID = "root"
Builder.Password = "mypan4"
Builder.Database = "sakila"

②:SQL文修正

Dim SqlStr = "select * from actor limit 10"

サンプルデータベースにある、actorテーブル(from actor)の全ての列(*)を、10行だけ(limit 10)取得(select)する。というSQL文です。

以上で、ソースの修正は終わりです。

VB.NETのプログラムを実行

プログラムの実行はVisual Studioウィンドウ上部にある「▶開始」ボタンから実行します。

①:実行したらサンプルデータのデータが表示されます。

実行画面

データを取得してデータグリッドにセットする処理が、フォームロードイベントに記述されているため、フォームが表示されたらデータも表示されます。

②:ボタンをクリックしたら「Hello World」がテキストボックスに表示される

実行画面②

まとめ

僕もVB.NETははっきり言って初心者レベルです。

だからこそ、つまずいた点なども記載していますので、参考になるのではないかと思います。

まったく経験がないわけではないですが、今回もたぶん同じところでつまずきました。

このページだけで、DB接続まで完了するので、VB.NETをこれから勉強したい人には環境作りが一通り終わり、あとはひたすらコードを書いて覚えるだけです。

僕も、これからもう少し勉強したいと思います。

数時間でここまでできたのも、参考にさせていただいたサイトのおかげです。

とはいえ、ちゃんとVB.NETを勉強するには、本を買った方が体系的に勉強できていいと思います。

僕は、とりあえずKindle Unlimited(0円)本を買いましたよ。