VB.NET ODP.NETでOracleに接続する
ODP.NETを使用してOracleのデータベースに接続する方法を紹介します。
OracleClientはインストール済みとします。
以下の例では12.1.0をインストールしている場合の例になりますが、どのバージョンでもやり方は変わりません。
参照の追加
Oracle.DataAccess.dllをソリューションにコピーして、参照に追加します。
Oracle.DataAccess.dllは以下のフォルダにあります。
- C:\app\client\ユーザー名\product\12.1.0\client_1\ODP.NET\bin\2.x
- C:\app\client\ユーザー名\product\12.1.0\client_1\ODP.NET\bin\4
2.xと4の2種類がありますが、.NET Frameworkのバージョンによって使い分けてください。
.NET Frameworkが2の場合は2.x、4の場合は4を使用します。
接続文字列
VB.NETからOracleに接続するために接続文字列を指定する必要がありますが、以下の形式で指定します。
Oracleなのでユーザー名 = スキーマ名と考えてもらって問題ありません。
Data Source=ネットサービス名;User ID=スキーマ名;Password=スキーマのパスワード;ネットサービス名はtnsnames.oraファイルに定義したものを使用してください。
tnsnames.oraファイルは以下にあります。
- C:\app\client\ユーザー名\product\12.1.0\client_1\network\admin
ファイルがない場合は以下のように作成してください。(ネットサービス名は自由に設定してください)
tnsnames.oraネットサービス名 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = Oracleサーバーのホスト名またはIPアドレス)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = データベースのサービス名)
)
)実装
以下はテーブルからデータを取得するサンプルです。
SQL文の組み立てはパフォーマンスの観点からStringではなくStringBuilderを使用することが多いです。
Try-Catchを使った方法をよく見かけますが、Usingを使用したほうがコネクションの破棄などを忘れることがないと思います。
10行目のOpenでOracleに接続していますので、ここでエラーになる場合は接続ができていない状態ですので、もう一度設定を見直してください。
Imports Oracle.DataAccess.Client 'ファイルの先頭に追加
Public Function SelectData() As DataSet
Dim ds As New DataSet
Using conn As OracleConnection = New OracleConnection(接続文字列)
'コネクションOpen
conn.Open()
Dim sql As New StringBuilder
sql.AppendLine(" SELECT ")
sql.AppendLine(" T1.COL1 ")
sql.AppendLine(" ,T1.COL2 ")
sql.AppendLine(" FROM ")
sql.AppendLine(" TABLE_A T1 ")
Using cmd As New OracleCommand(sql.ToString(), conn)
Using da As OracleDataAdapter = New OracleDataAdapter(cmd)
da.Fill(ds, "TABLE_A")
End Using
End Using
End Using
Return ds
End Function