これまでこのブログでは、ASP(Classic ASP)内でVBScriptを利用するプログラムでSQL Serverに接続していたが、接続先となるデータベースをOracleに変更した場合も、同様の実装を行える。
今回は、ASP(Classic ASP)とVBScriptを利用してOracleに接続してみたので、そのプログラムを共有する。
前提条件
下記記事のASP(Classic ASP)とVBScriptを利用してSQL Serverに接続する、Subプロシージャを利用したプログラムの作成が完了していること。
また、下記記事の内容に従い、Oracle XEのインストールとUSER_DATAテーブルの作成が完了していること。
その結果、以下のように、Oracleのインストールディレクトリ(C:\oraclexe\app\oracle\product\11.2.0\server\bin)を確認し、OraOLEDB{バージョン}.dllがインストール済であることを確認する。
サンプルプログラムの作成
なお、上記の赤枠は、前提条件のプログラムから追加・変更したプログラムである。
Subプロシージャで定義したプログラムの内容は以下の通りで、ユーザーデータリストに設定する各値を定義したuserData.incを読み込むと共に、Oracleからユーザーデータリストを取得している。Oracle接続時は、OraOLEDB{バージョン}.dllを利用するようにしている。
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 48 49 50 51 | <!-- #include file="userData.inc" --> <% Sub GetUserDataList(ByRef userDataList) 'ユーザーデータリストを初期化する Set userDataList = CreateObject("System.Collections.ArrayList") 'Oracleに接続する Dim objCon Dim objRS Set objCon = CreateObject("ADODB.Connection") objCon.Open "Provider=OraOLEDB.Oracle;Data Source=xe;" _ & "User ID=USER01;Password=USER01;" 'USER_DATAテーブルから全データを取得する Set objRS = objCon.Execute("SELECT * FROM USER_DATA") Do Until objRS.EOF 'ユーザーデータを生成し、取得したデータを設定する Dim userData Set userData = New UserData userData.setId(objRS("id").Value) userData.setName(objRS("name").Value) userData.setBirthDay(objRS("birth_year").Value & "年" _ & objRS("birth_month").Value & "月" _ & objRS("birth_day").Value & "日") Dim sexVal If objRS("sex").Value = "1" Then sexVal = "男" ElseIf objRS("sex").Value = "2" Then sexVal = "女" Else sexVal = "" End If userData.setSex(sexVal) userData.setMemo(objRS("memo").Value) 'ユーザーデータを追加する userDataList.add userData Set userData = Nothing '次のレコードに進む objRS.MoveNext LOOP 'Oracleから切断する objCon.Close Set objRS = Nothing Set objCon = Nothing End Sub %> |
また、ASPのプログラムの内容は以下の通りで、subora.incを読み込むと共に、Subプロシージャで取得したユーザーデータリストを画面に表示している。
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 48 49 50 51 52 53 | <%@ LANGUAGE="VBScript" %> <!-- #include file="sub/subora.inc" --> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="Shift_JIS"/> <title>Oracle接続</title> </head> <body> Oracleのユーザーデータテーブル(USER_DATA)から、全データを取得します。<br/><br/> <% 'USER_DATAテーブルから全データを取得する Dim userDataList Call GetUserDataList(userDataList) %> <!-- ユーザーデータを表示する --> <!-- データが無い場合は、メッセージを画面表示し終了する --> <% If userDataList.Count = 0 Then %> ユーザーデータテーブルにデータはありません。 <% Else %> <table border="1" cellpadding="5"> <tr> <th>ID</th> <th>名前</th> <th>生年月日</th> <th>性別</th> <th>メモ</th> </tr> <% Dim user For Each user In userDataList %> <tr> <td><%= user.getId() %></td> <td><%= user.getName() %></td> <td><%= user.getBirthDay() %></td> <td><%= user.getSex() %></td> <td><%= user.getMemo() %></td> </tr> <% Next %> </table> <% End If %> <% 'ユーザーデータリストをクリアする userDataList.Clear Set userDataList = Nothing Set user = Nothing %> </body> </html> |
サンプルプログラムの実行結果
サンプルプログラムの実行結果は、以下の通り。
1) Oracleのデータ取得元となるテーブルのデータを、以下のように設定する。
2) ブラウザ上でURLに「http://localhost/oracle.asp」を入力すると、以下の画面が表示されることが確認できる。
3) Oracleのデータ取得元となるテーブルのデータを削除する。
4) ブラウザ上でURLに「http://localhost/oracle.asp」を再度入力すると、以下の画面が表示されることが確認できる。
要点まとめ
- ASP(Classic ASP)とVBScriptを利用するプログラムで、Oracleに接続することもできる。その際、ADO(ActiveX Data Objects)を利用し、OraOLEDB{バージョン}.dllを利用して接続する。