Visual Studio 2017 Visual Basic データベース接続文字列の取得

プログラミング

Visual Baicほど古い歴史をもつプログラムになると、過去の記事が邪魔で仕方なくなる。

ごく当たり前の話だけれど、データベース接続文字列をプログラム上でどう入手するか、という情報はコロコロ変わってきたようだ。

まず、かなり前から接続文字列はapp.configに保管されている。

Visual Basicの各種サービス(Dataset, DataTable)などはこれを参照してデータベースと接続する。

一方で自前でデータベースに接続する際、

dim cn = New OleDbConnection()
cn.ConnectionString = "Probider=Microsoft.ACE.OLEDB.16.0; Data Source = C:\xxx.accdb;"

などと書くはずだ。
connectionstringを一か所に保持されたapp.configからもってきたいと良心的なプログラマーは考えるはずだ。
(もちろん動けばいいんだろならば、app.configから文字列をコピーして張り付けるだろう。そうすると接続文字列が変更になったとき、すべてのソースを探すハメになる。)

そしてついに最新の情報は私はインターネットで見つけられなかった。

Microsoftが書いている方法はC#を使った次の方法。
接続文字列と構成ファイル

これをVisual Basicで書き直したのが次。

Imports System.Configuration

' ----(省略)-----

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

        Dim connectionkey As String = "name"

        Dim settings As ConnectionStringSettings = ConfigurationManager.ConnectionStrings(connectionkey)
        MessageBox.Show(settings.connectionstring)
    End Sub
End Clas

ひょっとしたら最初は私と同様にconfigurationmanagerを見つけられないかもしれない。
UsingにあるとおりSystem.Configurationを設定して、プロジェクトの参照の追加から追加してください。

そうすると、ConfigurationManagerにアクセスできます。そして最初はsettingにあるような属性で宣言してください。connectionkeyはapp.configu中にある、あなたのプロジェクトでの接続文字列の名前(name)です。

最終的にsettings.connectionstringが目的の文字列のはずです。

これ調べるのに一日以上かかったのでメモ。

もちろん”Visual Basic 2017 逆引き大辞典”にもない技です。
この本、800ページ以上あるんだけど650ページ以降はVisual Basicとはちょっと違うように思う。こういう大事な情報を乗っけてほしいなぁ。普段、VB使っている人なら絶対知ってるハズ。。。

コメント