SQLServerへの接続文字列を簡単に作成する(SqlConnectionStringBuilder)

2022年3月18日金曜日

SQLServer VB.NET データベース

t f B! P L
今回もデータベースを扱うプログラムを
御紹介させていただければと思います。

前回はSqlConnectionオブジェクトの
ConnectionStringに接続文字列を設定し、
データベースとの接続を確立する手順を
御紹介いたしました。

今回はこのConnectionStringの文字列の
記述ミスをなくすための方法を御紹介させていただきます。

ConnectionStringプロパティにはキーワードと値を
連続して記載する必要があり
接続先や認証情報を動的に設定する場合に
記述ミスや思わぬエラーを引き起こしてしまう可能性があります。
そこでもう少し簡単に接続文字列を作成する方法として
「SqlConnectionStringBuilder」オブジェクト使用する方法を
御紹介させていただきます。

SqlConnectionStringBuilderオブジェクトには
設定するキーワードがプロパティとして用意されており、
各プロパティに接続情報を設定すると
ConnectionStringプロパティに接続文字列が設定されます。

では前回と同様に下記の接続情報にてSQLServerに接続する方法を
サンプルで見てみましょう

SQLServer サーバ名:DBServer
SQLServer インスタンス名:MyInstance
SQLServer データベース名:ExampleDB
SQLServer ユーザー名:sa
パスワード:*******

Private Sub prcDataOperation2()
    Dim strConnect As String
    Dim bldConectionString As SqlConnectionStringBuilder

    '接続文字列を作成する
    bldConectionString = New SqlConnectionStringBuilder

    With bldConectionString
        .DataSource = "DBServer\MyInstance"
        .InitialCatalog = "ExampleDB"
        .IntegratedSecurity = False
        .UserID = "sa"
        .Password = "*******"
    End With

    strConnect = bldConectionString.ConnectionString

    'データベースへ接続しデータ操作を行う
    Try
        Using conSQLConnect As New SqlConnection
            '接続文字列をセットし、データベースへ接続する。
            With conSQLConnect
                .ConnectionString = strConnect
                .Open()
            End With

            '###この部分にデータベース処理を記述します。###

            '処理が終了すれば接続を閉じる
            conSQLConnect.Close()
        End Using

        'エラー処理
        Catch ex As Exception
            MsgBox("No." & Err.Number & vbCrLf & Err.Description, _
                        MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, _
                        "データベース接続エラー")
            Exit Sub
    End Try
End Sub

以上がSqlConnectionStringBuilderオブジェクトを使用して
データベースへの接続文字列を作成するサンプルです。
プログラム内で接続文字列を1から記述するより、
各プロパティに値をセットするだけで作成できますので、
記述ミスを減らすことも可能かと思います。

今回も簡単な御紹介となっておりますので、
MicroSoftのドキュメントなども参考にしていただければ幸いです。

他にもいろいろと方法もございますし、
開発するシステムによっては、よりふさわしい方法もあるかと思いますが、
御参考にしていただければと思います。
サンプルはVB.NETで作成しておりますが、
考え方はどんな言語でも同じですので、
参考にしていただければと思います。

QooQ