ASP/VBScript

ASP(Classic ASP)とVBScriptを利用してOracleに接続するプログラムを作成してみた

これまでこのブログでは、ASP(Classic ASP)内でVBScriptを利用するプログラムでSQL Serverに接続していたが、接続先となるデータベースをOracleに変更した場合も、同様の実装を行える。

今回は、ASP(Classic ASP)とVBScriptを利用してOracleに接続してみたので、そのプログラムを共有する。

前提条件

下記記事のASP(Classic ASP)とVBScriptを利用してSQL Serverに接続する、Subプロシージャを利用したプログラムの作成が完了していること。

ASP(Classic ASP)とVBScriptを利用したプログラムをSubプロシージャに分割してみたVBScriptを利用したプログラムは、SubプロシージャやFunctionプロシージャを利用してモジュール分割ができる。 今回は...

また、下記記事の内容に従い、Oracle XEのインストールとUSER_DATAテーブルの作成が完了していること。

Spring BootでOracle接続処理を実装してみたSpring BootのWEBアプリケーションを開発する際、なんらかのデータベースにアクセスすることが多いが、SpringのJPAライブ...

その結果、以下のように、Oracleのインストールディレクトリ(C:\oraclexe\app\oracle\product\11.2.0\server\bin)を確認し、OraOLEDB{バージョン}.dllがインストール済であることを確認する。
インストール済Oracleの確認_1

サンプルプログラムの作成

サンプルプログラムの構成は、以下の通り。
サンプルプログラムの構成_1

サンプルプログラムの構成_2

なお、上記の赤枠は、前提条件のプログラムから追加・変更したプログラムである。

Subプロシージャで定義したプログラムの内容は以下の通りで、ユーザーデータリストに設定する各値を定義したuserData.incを読み込むと共に、Oracleからユーザーデータリストを取得している。Oracle接続時は、OraOLEDB{バージョン}.dllを利用するようにしている。

<!-- #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プロシージャで取得したユーザーデータリストを画面に表示している。

<%@ 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>



サラリーマン型フリーランスSEという働き方でお金の不安を解消しよう先日、「サラリーマン型フリーランスSE」という働き方を紹介するYouTube動画を視聴しましたので、その内容をご紹介します。 「サ...

サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) Oracleのデータ取得元となるテーブルのデータを、以下のように設定する。
サンプルプログラムの実行結果_1

2) ブラウザ上でURLに「http://localhost/oracle.asp」を入力すると、以下の画面が表示されることが確認できる。
サンプルプログラムの実行結果_2

3) Oracleのデータ取得元となるテーブルのデータを削除する。
サンプルプログラムの実行結果_3_1

サンプルプログラムの実行結果_3_2

4) ブラウザ上でURLに「http://localhost/oracle.asp」を再度入力すると、以下の画面が表示されることが確認できる。
サンプルプログラムの実行結果_4

要点まとめ

  • ASP(Classic ASP)とVBScriptを利用するプログラムで、Oracleに接続することもできる。その際、ADO(ActiveX Data Objects)を利用し、OraOLEDB{バージョン}.dllを利用して接続する。