Perl/ActivePerl For UNIX/Linux/Windows
 
TryThe Homepage
初めてのCGI
CGI 研究室
ダイナミックCGI
ダウンロード
サービス
サーバ構築(Windows)
データベースアクセス
有料サービス
FAQ
お問い合わせ
このページを印刷
ODBCによるAccess操作
  ODBCによるAccessデータベースへのアクセス
Microsoft Accessのデータベース(*.mdb)にアクセスするなら前節のOLEで接続可能ですから、 特にODBCを使用しなくてもいいようですが、ODBCを使用すると、コードを変更することなく、 Windows用のMySQLにもアクセスできます。
OLE接続とODBC接続では、使用するモジュールが違う為、作成するインターフェースも違ってきます。 Accessだけでなく、他のデータベースも操作する必要が有る場合は、ODBCを1つ覚えるだけで、 全てのデータベースにアクセス可能なインターフェースを作成可能です。

Accessオンリーで、VBやVCでクライアントソフトを作成する場合はOLEで、 オールマイティなサーバソフトを作成するならODBCと使い分けてはいかがでしょう。 ODBCもVBやVCからアクセスできますが、直接Jetエンジンを操作するOLEとは格段の速度低下になります。
  • ODBCの準備
    Accessのデータベースをシステムに認識させる為、名前をつけ、データベース(.mdb)を関連付ける必要が有ります。
    Windows2000/Xpでは、コントロールパネルの「管理ツール」を開きます。
    このフォルダの「データソース(ODBC)」を選択してください。

    [システム DSN]タブの[追加]を押します。

  • ドライバー一覧が表示されますので、「Microsoft Access Driver (*.mdb)」を選択し、[完了]を押します。


  • 「データソース名」を設定します。
    perlからのアクセスはこの名称を指定します。ここでは仮に「FindZip」にでもしておきましょう。
    UNIXやLinuxとの共有時に文字コードなど、変換の問題が起こりかねませんので、半角英数字にしておきましょう。

    ここで設定したデータソース名に関連付けるデータベースを選択する為、[選択]ボタンを押します。
    このサンプルでは全国の郵便番号が格納されている「zip.mdb」を選択しています。

  • ファイル選択ダイアログからAccessのデータベース(*.mdb)を選択します。

    ネットワーク上のディスクからでも構いませんが、ドライブ番号を設定しておく必要があります。
    [ネットワーク]ボタンを押して、同時にドライブ番号を設定する事もできます。

  • これで、ODBCの設定は完了です。

    [OK]ボタンでODBC設定ダイアログを閉じます。
  Perl ODBCモジュールのインストール
  • 極端に古いActivePerlでない限り、ODBCモジュールは標準でインストールされていますので、 改めてインストールする必要はありません。
    #!/user/local/bin/perl

    use Win32::ODBC;
    print "Content-type: text/plain\n\n";
    exit;
    これだけのコードのCGIを実行してエラーが出力されなけばODBCはインストール済みと言うことになります。

  • エラーの出力された方はODBCをインストールします。
    [スタート]メニューの「ファイル名を指定して実行」で、
    command
    とタイプしてDOSシェルを起動します。
    C:\> ppm
    PPM interractive shell (2.2.0) - type 'help' for available command
    PPM> search ODBC
    PPM> install Win32::ODBC
    Install package 'Win32::ODBC?' (y/N): y
    search ODBC で検索し、Win32::ODBC が表示されれば、
    install Win32:ODBC でインストールしてください。

    これでデータベースへのアクセスの準備は完了です。
    あとは実際にインターフェースを作成してアクセスするだけです。
  Access(*.mdb)に接続インターフェースの作成
  • ODBCドライバ「FindZip」に関連つけられたAccessのデータベースzip.mdbのデータを表示します。
    #!/usr/local/bin/perl
    # ODBCモジュールを読込む
    use Win32::ODBC;
    print "Content-type: text/html\n\n";
    print "<html>"
    print "<body>"

    # 設定したDSN名「FindZip」を指定してオブジェクトを作成
    $db= new Win32::ODBC("DSN=FindZip");
    # 既存のクエリーQueryZipから高知県を郵便番号順に
    $db->Sql("SELECT * FROM QueryZip WHERE pre = 39 ORDER BY code");
    # 取得したレコードセットの数だけループして表示
    while ( $db->FetchRow() ){
      undef %FIELDS;
      # 各フィールドのデータをハッシュに格納
      %FIELDS= $db->DataHash();
      print "$FIELDS{'code'} $FIELDS{'name'}$FIELD{'citys'}<BR>\n";
    }
    # データベースを閉じる
    $db->Close( );
    print "</body></html>";
    exit;
Copyright 2004 Terra. All rights reserved. No reproduction or republication without written