« スタートアップスクリプトではUNC名が使えない | メイン | Perl から DBI 経由でデータベースを使う »
2004年03月07日
SQLserver に perl でアクセス
この間のアクセスのデータベースを使った例と基本的に同じでよいのだが、接続文字列の書き方を忘れたときのためにメモを残しておく。接続文字列中で Data Source= のあとにはサーバ名を書く。ローカルのSQL server または MSDE を使うなら Data Source=(local) と書ける。
Initial Catalog= のあとにはデータベース名を書く。
ユーザ名、パスワードは user id=, password=で指定する。もし、Windows認証を使うのなら、ユーザ名とパスワードの指定の替わりに、
Integrated Security=SSPI
あるいは
Trusted_Connection=yes
と書けばよい。# SQLserver のデータベース操作の例 # # SRV2003 という名のサーバ上の SQLserver の # test という名のデータベースに接続し、 # seito というテーブルを作成し、データを追加し、 # データを読み出す。 use Win32::OLE; $server="SRV2003"; $db="test"; $user="tuser"; $password="tuser"; # データベースへの接続 $objDB=Win32::OLE->new("ADODB.Connection"); $connStr="Provider=sqloledb;". "Data Source=${server};". "Initial Catalog=${db};". "user id=${user};password=${password}"; $objDB->Open($connStr); $objDB->{Errors}->{Count} and die "cannot connect '$connStr'"; # テーブル作成 $objDB->Execute( "Create Table seito (id int, name Char(20))" ); # データ挿入 $objDB->Execute( "Insert into seito values (11,'蘇我 馬子')"); $objDB->Execute( "Insert into seito values (12,'中臣 鎌子')"); # データ読み出し $rs=Win32::OLE->new("ADODB.Recordset"); $rs->Open("select * from seito", $objDB); while(!$rs->EOF and $rs->{RecordCount}!=0){ print "$rs->{Fields}->{id}->{Value}, ", "$rs->{Fields}->{name}->{Value}\n"; $rs->MoveNext(); } $rs->Close(); # 接続を閉じる $objDB->Close(); $objDB=undef();
投稿者 augustus : 2004年03月07日 11:58
トラックバック
このエントリーのトラックバックURL:
http://www.augustus.to/cgi-bin/blog/mt-tb.cgi/56
コメント
takeshiといいます。
以前、DBIは使っていたのですが
ADOは何が何だがさっぱり分かりません。
突然SQL serverを使うことになってしまい、
Perlでアクセスできないか、調べていたらここに行き着きました。そのまま使えたのでとても役立ちました!
ありがとうございます!
投稿者 takeshi : 2004年04月15日 15:48
お役に立てて幸いです。私自身、今年から SQL Server を使う予定の初心者なんですが、こういうコメントをいただくと励みになります。
投稿者 augustus : 2004年04月16日 07:26