接続文字列取得 [プロバイダファクトリ]

Visual Basic ADO.NET [Community Express]

データベースのOpen,Close

プロバイダファクトリのインスタンスを使って、SQL Server 2008 Expressでデータベースの開閉をテストするサンプルプログラムを作成します。

プロバイダファクトリDbProviderFactoryを利用すると、インスタンス生成時の引数と接続文字列を変更するだけで、データベースアクセスに関するプログラムは、ほとんど修正する必要がありません。

サンプルプログラム

DB接続テスト

DbProviderFactory と DbConnectionのインスタンスを生成して、データベースの開閉を確かめるプログラムを作成します。

DbProviderFactory と DbConnectionのインスタンスを生成し、app.configファイルから接続文字列を取得して、SQLServer 2008 Express Edition の販売管理データベースに接続するプログラムを作成します。

最初に参照の追加から、System.ConfigurationとSystem.Data.Commonを追加して、プロジェクトにインポートします。

接続ボタンクリック処理でデータベースの開閉確認をします。データベースの開閉をメッセージボックスに表示します。

【注意】接続状態を確認するために
Dim con As DbConnection = fa.CreateConnection()
Using con
とコーディングしていますが、通常は
Using con As DbConnection = fa.CreateConnection()
とコーディングします。

Option Strict On
Imports System.Data.Common
Imports System.Configuration

Public Class FormProviderFactory

  Private Sub Button1_Click _
      (ByVal sender As System.Object, ByVal e As System.EventArgs) _
      Handles Button1.Click

      Try
          'SQL ServerのDbProviderFactoryインスタンス生成
          Dim fa As DbProviderFactory

          fa = DbProviderFactories.GetFactory("System.Data.SqlClient")

          'DbConnectionインスタンス生成
          Dim con As DbConnection = fa.CreateConnection()

          Using con
              Dim settings As ConnectionStringSettings

              '接続文字列をapp.configファイルから取得
              settings = ConfigurationManager. _
                  ConnectionStrings("販売管理ConnectionString")

              If settings Is Nothing Then
                  '接続文字列取得エラー
                  MessageBox.Show("app.configに未登録","接続文字列")
                  Exit Sub
              Else
                  '接続文字列の設定
                  con.ConnectionString = settings.ConnectionString
                  'DBを開く
                  con.Open()
                  '【DBの接続状態を確認】
                  MessageBox.Show(con.State.ToString, "開いた直後")
              End If

          End Using

          '【DBの接続状態を確認】
          MessageBox.Show(con.State.ToString, "End Using直後")

      Catch ex As Exception
          MessageBox.Show(ex.ToString, "接続テストで【例外発生】")

      End Try

  End Sub

End Class