- ベストアンサー
dbへの接続について
dbへの接続について Visual Basic2008でVBを勉強中の者です。初心者です。 SQL serverと接続するやりかたを参考書を頼りにコーディングして接続などは問題ないのですが、 プロシージャごとに毎回DBへの接続文字列を指定して接続して、、とやっているのですが何か 無駄なことしている気がしてきました。(同じコードが各フォームの各プロシージャにあるので) DBサーバの情報が変わったときなどもコードを修正するのが大変だと思いました。 こういう場合、何かいい方法はありませんでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ConfigurationManagerを使えば、正常なパターンは1行で終わるので、何となくわざわざ専用のメソッドを作らなくてもいいような気もしますが、正常じゃないパターンもきちんと対処するのであれば、専用のメソッドを作るのも良いと思います。 例えば、App.configに登録されいてるはずのconnectionStringNameを渡して、戻り値がConnectionStringにするとか。 で、そんなものはないという時は、nullなり長さ0の文字列を返すなりするようにしてみてはいかがでしょうか。
その他の回答 (3)
- oboroxx
- ベストアンサー率40% (317/792)
ConfigurationManagerというのに、App.configに保存されたConnectionStringを取得するメソッドがあります。 ConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionStringという感じだったと思います。 また、自分で作成するにしても、同じ処理が複数のフォームにまたがってあるというのであれば、あるクラスにConnectionStringを作成する静的なメソッドを作っておいてそれを呼び出すようにするというのが良いかもしれません。
- yutuo
- ベストアンサー率50% (4/8)
(1)接続文字列を定義します。例えば、SQL serverを連接の場合、 Dim SQLConnString As String = "Server={0};Initial Catalog={1};User ID={2};Password={3};" (2)INIファイル又はほかの定義ファイルから、サーバ名、DB名、ユーザ名とパスワードを取得し、接続文字列をFommatします。 Dim strConn As String = String.Format(SQLConnString, ServerName, DataBaseName, UserName, Password) (3)最後は(2)番目取得した文字列より、DB接続を取得します。 New SqlConnection(strConn)
- nn1102
- ベストアンサー率80% (12/15)
接続部分に関しては継承関係のクラスに設計すればよいと思います。 親クラスで接続を管理して派生クラスで各業務処理を行う等。 接続文字列の管理に関しては以下のリンクが参考になると思います。
お礼
回答ありがとうございます。 app.configにConnectionStringを記述して、それを読み出すことに成功しました。 これで接続情報に変更があってもapp.configの変更だけで済みそうです。 あと、同じコードが多数のプロシージャに存在する件ですが、DBに接続するのに 下記のようにコードを書いています。 これはやはりプロシージャごとに書くのが普通でしょうか? Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKButton.Click Try Dim con As New System.Data.SqlClient.SqlConnection Using con Dim settings As ConnectionStringSettings '接続文字列をapp.configファイルから取得 settings = ConfigurationManager.ConnectionStrings("*****.My.MySettings.connectStrings") If settings Is Nothing Then '接続文字列取得エラー MessageBox.Show("app.configに未登録", "接続文字列") Else '接続文字列の設定 con.ConnectionString = settings.ConnectionString 'DBを開く con.Open() 'DBに対する処理(レコードの追加・変更・削除等) End If End Using Catch ex As Exception MessageBox.Show(ex.ToString, "DB接続エラー") End Try End Sub