app.configから接続文字列取得

Visual Basic ADO.NET [Community Express]

configファイルに接続文字列を保管

前ページからの続きです。

[データソース構成ウィザード]のデータ接続の選択画面で、[次へ]のボタンを押します。

すると、[選択された接続は、・・・プロジェクトにファイルをコピーして・・・]のダイアログが表示されるので、[はい]ボタンを押せば、アプリケーションルートディレクトリにデータベースファイルがコピーされます。

[いいえ]を押すと、データベースファイルはコピーされません。

[接続文字列をアプリケーション構成ファイルに保存する]ページで、[次の名前で接続を保存する]をチェックします。名前は変更しないで、既定値のまま使います。

さらに、[次へ]のボタンを押すと、データベースオブジェクトの選択画面が表示されるので、テーブルを選んで、[完了]ボタンを押せば完成です。

接続文字列は、app.configファイルに生成されます。ソリューションエクスプローラで、app.configファイルを開けば確認できます。たとえば、次のように、configuration要素のconnectionStrings要素内に格納されます。

接続テストのサンプルプログラム

それでは、app.configファイルの接続文字列を取得して、接続テストをします。フォームにボタンをひとつ追加し、データベースに接続するプログラムを作成します。

最初に、参照の追加で、System.Configurationを追加して、プロジェクトにインポートしてください。

接続ボタンを押すと、データベースの開閉をメッセージボックスに表示します。接続状態は、Stateプロパティを文字列に変換すれば、確認できます。

ConnectionStringSettingsオブジェクトを使用すると、ConfigurationManager クラスのConnectionStrings プロパティで、addタグのname属性を指定すると、アプリケーション構成ファイルから接続文字列を取得できます。

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

Public Class Connection

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

        Try
            Dim con As New SqlConnection

            Using con
                Dim settings As ConnectionStringSettings

                '接続文字列をapp.configファイルから取得
                settings = _
                ConfigurationManager.ConnectionStrings _
                ("AdoNet.My.MySettings.sampleDBConnectionString")

                If settings Is Nothing Then
                    '接続文字列取得エラー
                    MessageBox.Show("app.configに未登録","接続文字列")

                Else
                    '接続文字列の設定
                    con.ConnectionString = settings.ConnectionString

                    'DBを開く
                    con.Open()

                    '---<< DBの接続状態を確認>>---
                    MessageBox.Show(con.State.ToString, "開いた直後")

                End If

            End Using

            '---<< DBの接続状態を確認>>---
            MessageBox.Show(con.State.ToString, "閉じた直後")

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

        End Try

    End Sub

End Class