接続文字列をプログラム内で作成、変更

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
公開
Loading