« スタートアップスクリプトでは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

コメントしてください




保存しますか?