データベース(Oracle)に接続する(OLE DB を使用)
2017/09/28
OLE DB プロバイダ
OLE DBには、Oracle 提供の Oracle Provider for OLE DB と Microsoft 提供の OLE DB Provider for Oracle の2種類があります。いずれの場合も ADO を使用してプログラムが可能です。
また、OLE DB の他に、ODBC や oo4o といったミドルウェアがあります。
Oracle Provider for OLE DB
Oracle に接続するには、Oracle Client が必要です。
ADO で接続するには Open メソッドの ConnectionString プロパティ に、OraOLEDB.Oracle という文字列を使用します。
接続文字列パラメータ
<tnsnames.ora ファイルを使用する場合>
Provider = OraOLEDB.Oracle;
Data Source = ServerName;
User ID = UserName;
Password = UserPassword;
<tnsnames.ora ファイルを使用せず直接指定する場合>
Provider = OraOLEDB.Oracle;
Data Source = StrDataSource;
User ID = UserName;
Password = UserPassword;
引数・戻り値
ADO に関しては データベース(Access 等)に接続(ADO) を参照して下さい。
データベース(Oracle)へ接続する例(Oracle OLE DB を使用)
サンプルVBAソース1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
Sub Sample_OLEDB_Oracle() 'tnsnames.ora ファイルのネットサービス名' Const STRDATASOURCE = "hpdb1" 'tnsnames.ora を使用しない場合(直接指定) 'Const STRDATASOURCE = _ ' "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)" & _ ' "(HOST = localhost)(PORT = 1521))(CONNECT_DATA = (SID = hpdb1)))" Const USERNAME = "uhpdb1" '接続するデータベースのユーザー名 Const PASSWORD = "uhpdb1" 'パスワード Dim oraCon As New ADODB.Connection Dim oraCmd As New ADODB.Command Dim constr As String Dim strSQL As String constr = "Provider=OraOLEDB.Oracle" constr = constr & ";Data Source=" & STRDATASOURCE constr = constr & ";User ID=" & USERNAME constr = constr & ";Password=" & PASSWORD oraCon.ConnectionString = constr oraCon.Open strSQL = "insert all " strSQL = strSQL & "into table01 (id, name) " strSQL = strSQL & "values (1, '山田太郎') " strSQL = strSQL & "into table01 (id, name) " strSQL = strSQL & "values (2, '山本花子') " strSQL = strSQL & "into table01 (id, name) " strSQL = strSQL & "values (3, '田中一郎') " strSQL = strSQL & "select * from dual" With oraCmd .ActiveConnection = oraCon .CommandText = strSQL .Execute End With Set oraCmd = Nothing oraCon.Close Set oraCon = Nothing End Sub |
Microsoft OLE DB Provider for ODBC
Oracle に接続するには、Oracle Client が必要です。
ADO で接続するには Open メソッドの ConnectionString プロパティ に、MSDAORA という文字列を使用します。
接続文字列パラメータ
<tnsnames.ora ファイルを使用する場合>
Provider = MSDAORA;
Data Source = ServerName;
User ID = UserName;
Password = UserPassword;
<tnsnames.ora ファイルを使用せず直接指定する場合>
Provider = MSDAORA;
Data Source = StrDataSource;
User ID = UserName;
Password = UserPassword;
引数・戻り値
- ServerName ・・・ tnsnames.ora ファイルのネットサービス名を指定します。
- UserName ・・・ ユーザー名を指定します。
- UserPassword ・・・ パスワードを指定します。
- StrDataSource ・・・ tnsnames.ora ファイルの内容をそのまま記述します。
データベース(Oracle)へ接続する例(Microsoft OLE DB を使用)
サンプルVBAソース 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
Sub Sample_OLEDB_Microsoft() 'tnsnames.ora ファイルのネットサービス名' 'Const STRDATASOURCE = "hpdb1" 'tnsnames.ora を使用しない場合(直接指定) Const STRDATASOURCE = _ "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)" & _ "(HOST = localhost)(PORT = 1521))(CONNECT_DATA = (SID = hpdb1)))" Const USERNAME = "uhpdb1" '接続するデータベースのユーザー名 Const PASSWORD = "uhpdb1" 'パスワード Dim oraCon As new ADODB.Connection Dim oraRs As new ADODB.Recordset Dim constr As String Dim strSQL As String constr = "Provider=MSDAORA" constr = constr & ";Data Source=" & STRDATASOURCE constr = constr & ";User ID=" & USERNAME constr = constr & ";Password=" & PASSWORD oraCon.ConnectionString = constr oraCon.Open strSQL = "select * from table01" oraRs.Open strSQL, oraCon With Worksheets("oracle") .Cells.Clear .Range("A1").CopyFromRecordset oraRs End With oraRs.Close oraCon.Close Set oraRs = Nothing Set oraCon = Nothing End Sub |
実行結果
関連記事
-
-
フィールド名(ADO)Field オブジェクト
Field オブジェクト Recordset オブジェクト内の列(フィールド)を …
-
-
インデックス、プロパティの設定(ADOX)
インデックスを作成する index オブジェクト 【書式】 <CreateObj …
-
-
データベース(Oracle)に接続する(oo4o)
oo4o 接続 OO4O(Oracle Objects for OLE)はWin …
-
-
クエリにパラメータを渡して結果を取得する(ADO)Command オブジェクト・Execute メソッド
クエリにパラメータを渡して結果を取得する手順 Command オブジェクトの作成 …
-
-
Recordset オブジェクト内のレコード数(ADO)RecordCount プロパティ
RecordCount プロパティ Recordset オブジェクトのレコード数 …
-
-
テーブル名、クエリ名の取得(ADOX)
テーブル名の取得 Table.Type プロパティ 【書式】 <取得> obje …
-
-
カレントレコードの移動(ADO)MoveFirst、MoveLast、MoveNext、MovePrevious、Move
MoveFirst メソッド、MoveLast メソッド、MoveNext メソ …
-
-
Excelファイルに接続(ADO)
ADOでExcelファイルに接続 ADO を使用してExcelファイルを読み込み …
-
-
データベース(MySQL)に接続する(ADO)
MySQL ODBCドライバ Windowsには標準で、いくつかの ODBC ド …
-
-
レコードを並べ替える(ADO)Sort プロパティ
データベースのレコードを並べ替える Sort プロパティ 【書式】 object …