VisualBasic から ADO.NET を使用して SQL Server に接続・使用する簡単な例。
SQL Server のインストールや、DB作成、TABLE作成は済んでいること。
(1) データソースの選択と、DB接続設定を行う
- [表示]→[サーバーエクスプローラー] でサーバーエクスプローラーを表示する。
- サーバーエクスプローラー上にある DB アイコン(データベースへの接続)をクリック。
- 「データソースの選択」ダイヤログが開くので、データソースで「Microsoft SQL Server」を選択。データプロバイダーは「.NET Framework SQL Server用データプロバイダー」を選択する。[続行]ボタン押下。
- 「接続の追加」画面が開くので、「サーバー名」を設定。サーバ名がわからなければ SQL Server Management Studio 等で調べる。うちの場合は「XVIDEOS\SQLEXPRESS」。XVIDEOS は PC名。(一覧から選択するのかと思ったが、フルに手入力しないといけなかった)
- 「サーバにログオンする」の「認証」を「SQL Server 認証」に変更する。ユーザ名とパスワードが入力可能になるので入力。(あらかじめ SQL Server Management Studio で作成したもの)
- 「データベースへの接続」の「データベース名の選択または入力」を選択。DB名を入力する。
- 画面下の「テスト接続」ボタンを押してみて正常に接続されれば「OK」ボタン押下。(うまくいかなければ、DB名やユーザアカウント、パスワードが間違っていないか?)
(2) データソースの登録
- [表示]→[その他のウィンドウ]→[データソース]でデータソースウィンドウを表示。
- データソースウィンドウの上の一番左の DB アイコン(データソースの追加)をクリック。
- 「データソースの種類の選択」画面で「データベース」を選択し「次へ」ボタン押下。
- 「データベースモデルの選択」画面で「データセット」を選択して「次へ」ボタン押下。
- 「データ接続の選択」では、対象の「データ接続」を選択し、「はい。重要情報を接続文字列に含めます」を選択し「次へ」ボタン押下。
- 「接続文字列をアプリケーション構成ファイルに保存する」画面では、そのまま「次へ」ボタン押下。
- 「データベースオブジェクトの選択」画面では、プログラムから参照する TABLE などをすべて選択する。「完了」ボタン押下。
(3) プログラム開発
サンプル用に、超簡単なプログラムを作る。ID と NAME という項目を持つ m_user という TABLE を参照し、NAME を画面に出すというプログラム。例えば、ID='admin' の NAMEは'偉い人'である。開発する画面は「IDを入力し『参考』ボタン(・・・参照と打ったつもりなのに(^^;)を押すと、下に『名前は○○です』」と表示する」という単純なもの。「参考」ボタンの Click イベントのソースを下記のとおり書いた。Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickDim sql As String'SQLステートメントsql = "SELECT name FROM m_user WHERE id='" & TextBox1.Text & "'"Label1.Text = ""'コネクション指定Using connection As New SqlClient.SqlConnection(My.Settings.nandfConnectionString)'データコマンドを定義するUsing command As New SqlClient.SqlCommand(sql, connection)'コネクションを開くconnection.Open()'データリーダの生成Dim dr As SqlClient.SqlDataReader = command.ExecuteReader()'データが存在する場合、label1にセット'検索結果は1件だけDo While dr.ReadLabel1.Text = "名前は " & dr("name") & " です"Loop'データリーダを閉じるdr.Close()'コネクションを閉じるconnection.Close()End UsingEnd UsingEnd Sub
いやあ、ADO.NET はデータソースの選択までのアレコレが煩わしいね。まあ、おかげでソースを書くのは楽なんだけど(笑)
それより、うーむ・・・まだ 5年前にやった VB.NET 案件で DB 利用をどのようにコーディングしたか思い出せない。なんとなく、インタフェースは ADO.NET だったような気がするが・・・