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使っている人なら絶対知ってるハズ。。。