« Wake up on LAN の実験 | メイン | スタートアップスクリプトではUNC名が使えない »

2004年02月29日

Perl でデータベースを操作する実験

Windows 上の Perl でデータベースを操作するには DBI モジュールか、OLE 経由で ADO を使うことができる。どちらが便利なのかまだ自分には分からないのだが、とりあえずローカルコンピュータ上でアクセスのデータベースを OLE 経由の ADO で操作するサンプルを以下に書いておく。
接続のところを変えれば SQL server でも使えるはずである。

データベース作成、テーブル作成、データ挿入の例
# アクセスのデータベース操作の例
# アクセスのデータベース hoge.mdb を作り、
# hoge.mdb に接続して、テーブルを作成、データを挿入。
# Windows 2000 pro, Access 2003 で動作確認を行った。

use Win32::OLE;
$connStr="Provider=Microsoft.Jet.OLEDB.4.0;";
$connStr.="Data Source=hoge.mdb;";

# アクセスのデータベース作成

$objCat=Win32::OLE->new("ADOX.Catalog");
$objCat->Create($connStr);
$objCat=undef();

#アクセスのデータベースへの接続
$objDB=Win32::OLE->new("ADODB.Connection");
$objDB->Open($connStr);

# テーブル作成
$cmd=$objDB->Execute(
    "Create Table seito(id int, name Char(20))" );

# データ挿入
$cmd=$objDB->Execute(
    "Insert into seito values(11,'蘇我 馬子')"  );
$cmd=$objDB->Execute(
    "Insert into seito values(12,'中臣 鎌子')"  );

# 接続を閉じる
$objDB->Close();
$objDB=undef();

データ読み出しの例
#  データベース操作の例
#  カレントディレクトリの hoge.mdb から
#  foo テーブルのデータを読みだす。
#  Windows 2000 pro, Access 2003 で動作確認を行った。

use Win32::OLE;

#アクセスのデータベースへの接続
$connStr="Provider=Microsoft.Jet.OLEDB.4.0;";
$connStr.="Data Source=hoge.mdb;";
$objDB=Win32::OLE->new("ADODB.Connection");
$objDB->Open($connStr);

# データ読み出し
$rs=$objDB->Execute("select id,name from seito");
while(!$rs->EOF){
	print "$rs->{Fields}->{id}->{Value},";
	print " $rs->{Fields}->{name}->{Value}\n";
	$rs->MoveNext();
}
$rs->Close();

# 接続を閉じる
$objDB->Close();
$objDB=undef();

投稿者 augustus : 2004年02月29日 18:52

トラックバック

このエントリーのトラックバックURL:
http://www.augustus.to/cgi-bin/blog/mt-tb.cgi/54

コメント

私はなぜかODBCを使うことが多いですねー。まあ普段からよく使えるものを使うといいんだと思いますけれども。PerlでDBを使うのは、「Perlを256倍使うための本DBI編」で覚えました。でもモジュールを自作する気はないので、イントロ部分しか読んでなかったりします(苦笑)。

投稿者 よしだ : 2004年03月01日 13:08

「Perlを256倍使うための本DBI編」はいい本ですよね。ややマニアックすぎるけど...。ところで、よしださんって、実は perl 使いだったんですね。知りませんでした。

投稿者 augustus : 2004年03月02日 18:04

コメントしてください




保存しますか?