接続文字列をプログラム内で作成、変更
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
- 公開