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