2013年1月2日水曜日

[Perl]Win32::OLE

Access DB にアクセスする
Win32::OLE (Object Linking and Embedding) を利用することで Access で作成した DB の操作ができるようになる。
下記のソースでは test.mdb という DB の test テーブルにアクセスし、id と name フィールドの値を読み出している。
use strict;
use Win32::OLE;
use utf8;

my $conn = "Provider=Microsoft.Jet.OLEDB.4.0;";
$conn .= "Data Source=test.mdb;";
my $db = Win32::OLE->new("ADODB.Connection") or die "CreateObject: $!";
$db->Open($conn);
my $query = "SELECT * FROM test;";
my $result = $db->Execute($query)
  or die join ' ', map { $db->Errors->Item($_)->Description } (0 .. $db->Errors->Count - 1);
while (!$result->EOF) {
  print $result->Fields('id')->Value . " " . $result->Fields('name')->Value . "\n";
  $result->MoveNext;
}
$result->Close();
$db->Close();
パスワード付きの DB の場合は Open 時に渡す文字列にパスワードを指定する。パスワードが hogehoge の場合は下記のようになる。
my $conn = "Provider=Microsoft.Jet.OLEDB.4.0;";
$conn .= "Data Source=test_pwd.mdb;";
$conn .= "Jet OLEDB:Database Password=hogehoge;";
my $db = Win32::OLE->new("ADODB.Connection") or die "CreateObject: $!";
$db->Open($conn);

0 件のコメント:

コメントを投稿