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 件のコメント:
コメントを投稿