接続文字列をプログラム内で作成、変更
OracleConnectionStringBuilderクラスは、アプリケーションで接続文字列の作成、変更が出来ます。
※ ADO.NET 2.0準拠のODP.NETでのみサポートされています。
プログラム実行時に接続先を変える事はあまり無いと思いますが、例えば部門毎に同内容の表領域が存在する場合の初期設定等で使う場面があるかもしれません。

ネットサービス名、ユーザID、パスワードを入れてOracleDataSourceEnumeratorで接続文字列を設定します。その上でデータベースに接続します。
Imports Oracle.DataAccess.Client
Public Class frmODPNET_OracleConnectionStringBuilder
Private ConStrBuild As OracleConnectionStringBuilder = Nothing
Private dt As DataTable = Nothing
'''
''' ネットサービス名コンボ itemセット
'''
'''
Private Sub setTNSCombo()
Dim dsenum As New OracleDataSourceEnumerator
Try
dt = dsenum.GetDataSources
With Combo1
.DisplayMember = "InstanceName"
.ValueMember = "InstanceName"
.DataSource = dt
End With
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
'''
''' 接続文字列を作成
'''
'''
'''
'''
'''
Private Sub BuildConnectionString(ByVal DataSource As String, ByVal UserID As String, ByVal Password As String)
'接続文字列のセット
ConStrBuild.DataSource = Combo1.SelectedValue.ToString.TrimEnd
ConStrBuild.UserID = TextUserID.Text
ConStrBuild.Password = textPassword.Text
TextConnectionString.Text = ConStrBuild.ConnectionString
End Sub
Private Sub frmODPNET_ADO2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextUserID.Text = "scott"
textPassword.Text = "tiger"
'ネットサービス名をコンボボックスにセット
setTNSCombo()
'接続文字列のセット
ConStrBuild = New OracleConnectionStringBuilder
BuildConnectionString(Combo1.SelectedValue.ToString.TrimEnd, TextUserID.Text, textPassword.Text)
End Sub
Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
Try
'接続文字列の作成
BuildConnectionString(Combo1.SelectedValue.ToString.TrimEnd, _
TextUserID.Text, _
textPassword.Text)
'接続
Using cn As New OracleConnection(ConStrBuild.ConnectionString)
cn.Open()
MessageBox.Show("データベースに接続出来ました", "Result", MessageBoxButtons.OK, MessageBoxIcon.Information)
cn.Close()
End Using
Catch ex As OracleException
MessageBox.Show(ex.Message, "データベース接続出来ません", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.Message, "データベース接続出来ません(その他の例外)", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Try
End Sub
End Class
説明
Line13 : OracleDataSourceEnumerator
登録されているネットサービス名などを取得しています。「ネットサービス名を取得」を参照
Line38-40 : プロパティに値をセットしています。
データソースプロパティ、UserIDプロパティ、Passwordプロパティに設定します。
Line42 : 接続文字列を取得
プロパティをセットした結果となる接続文字列を取得しています
履歴
- 2011/07/16
- 公開