PROGRAM VISUALBASIC

ASP.NET(VB.NET) MVCモデル入門~データベース接続

VB.NETアプリケーションからSQL Server Express LocalDBに接続する

今回は、VB.NETアプリケーションから、Visual Studioに付属しているSQL Server Express LocalDBに接続するプログラムを作ります。
VB.NETアプリケーションとデータベースの接続には、ADO.NETを使用します。
ADO(ActiveX Data Object).NETとは、SQL Serverなどのデータソースへの接続や、データソースに格納されているデータの取得、操作、更新を行う仕組みです
ADO.NETに関する詳しい内容は、以下のマイクロソフトの公式サイトを参照してください。

ADO.NET Entity Data Modelの作成

まず、新しいプロジェクトとデータベースを作成します。
データベースの作成手順は、こちらの記事を参照してください。
今回のプロジェクト名は「Test2」、データベース名は「TestDb」とします。
作成したデータベースをVB.NETアプリケーションに接続するために、ADO.NET Entity Data Modelを使用します。

ソリューションエクスプローラーの「Models」にカーソルを合わせて、右クリックから「追加」→「新しい項目」を選択します。

vbmvc10-1

左ペインの「データ」に合わせてから「ADO.NET Entity Data Model」を選択し、任意の名前を入力して、「追加」ボタンを押下します。

vbmvc10-2

「データベースからEF Designer」を選択し、「次へ」ボタンを押下します。

vbmvc10-3

しばらくすると、作成したデータベースが選択されるので、「次へ」ボタンを押下します。
※自動的にデータベースが選択されない場合は、「新しい接続」ボタンを押下して、データベースを手動で選択します。

vbmvc10-4

「Entity Framework 6.x」が選択されていることを確認して、「次へ」ボタンを押下します。

vbmvc10-9

モデルに含めるテーブルにチェックを入れて、「完了」ボタンを押下します。

vbmvc10-10

セキュリティ警告画面が何回か表示されますが、「OK」ボタンを押下して処理を継続します。

vbmvc10-11

しばらくすると、以下の画面が表示されます。
ソリューションエクスプローラーのModels配下に、"入力したモデル名".edmxという名前で、ADO.NET Entity Data Modelが作成されます。

vbmvc10-12

ADO.NET Entity Data Modelの内容を確認するには、ソリューションエクスプローラーから作成したモデルにカーソルを合わせ、アイコンメニューの「すべてのファイルを表示」アイコンをクリックします。

vbmvc10-13

展開すると、テーブルの内容が定義されたVBファイル(Emp.vb)があることが分かります。

vbmvc10-14

このクラスに、アノテーションで各プロパティにラベルと、生年月日に表示フォーマットを追加します。

データベース接続用コントローラーの作成

作成したADO.NET Entity Data Modelを使って、データベースに接続するコントローラーを作成します。

ソリューションエクスプローラーから「Controllers」にカーソルを合わせ、右クリックから「追加」→「コントローラー」を選択します。
以下の画面から「MVC 5 コントローラー - 空」を選択し、「追加」ボタンを押下します。

vbmvc10-19

コントローラー名を入力して、「追加」ボタンを押下します。

vbmvc10-20

コントローラーに対応するビューの作成

ソリューションエクスプローラーから「Views/Home」にカーソルを合わせ、右クリックから「追加」→「ビュー」を選択します。
以下の画面から「MVC 5 ビュー」を選択し、「追加」ボタンを押下します。

vbmvc10-21

ビュー名、テンプレートを入力し、「追加」ボタンを押下します。

vbmvc10-22

_Layout.vbhtmlとスタイルシート(Site.css)の編集

ビューを作成すると、自動的に「Views/Shared/_Layout.vbhtml」と「Content/Site.css」が作成されます。

vbmvc10-23

「_Layout.vbhtml」と「Site.css」を、以下のように修正します。

データベース接続用コントローラーの編集

作成したコントローラーを、以下のように修正します。
ファイルやデータベースの操作では、最後にDisposeを呼び出して、リソースを開放する必要があります。
VB.NETでは、Usingステートメントを使うことによって、Using ~ End Usingの中で使ったリソースの開放が行われます。
そのため、明示的にDisposeを呼び出す必要がなくなります。
10行目で、TestDbModel.Context.vbに定義されたTestDbEntitiesクラスを使用して、データーベースの情報を取得します。
Usingステートメントの中でデータベースの処理を記述しているので、データベースのリソースをDisposeする必要はありません。

データ表示用ビューの編集

1行目で、ビューで想定されるオブジェクトの種類として、Empクラスを指定します。
IEnumerableインターフェースを使うことで、データベースのレコードが複数あっても、一度に1レコードずつ渡されます。
13行目で、Modelオブジェクトに格納されているレコードを、For Each文で1レコードずつ取得します。

プログラムを実行

プログラムを実行すると、データベースに格納されているレコードの一覧が表示されます。

vbmvc10-24
実行結果

レコードの一覧をソート

レコードの一覧をソートするには、OrderBy()メソッドを使います。
上記プログラムを生年月日で昇順ソートする場合は、11行目を以下のように修正します。

ソートメソッドの種類は、以下の通りです。

OrderBy昇順ソート
OrderByDescending降順ソート
ThenBy後続の要素を昇順でソート
ThenByDescending後続の要素を降順でソート

-PROGRAM, VISUALBASIC
-, ,