在Ubuntu Linux下用Perl访问MS SQL Server数据库
时间:2010-07-14 来源:perl-v
在Ubuntu Linux下用Perl访问MS SQL Server数据库
Posted on July 11, 2009 by caker通过Perl访问MS SQL Server和Sybase SQL Server有两种方法: 1. 使用DBI + DBD::Sybase。用这种方法访问MS SQL Server有局限,例如不能使用 ?方式的点位符。 2. 使用DBI + DBD::Sybase + freetds可以访问MS SQL Server, Sybase等数据库。 使用第2种方法的步骤如下: (1) 安装需要的组件: aptitude install freetds-dev libdbd-freetds libdbd-sybase-perl (2) 配置freetds配置文件的数据库参数。也可以直接使用数据库服务的IP地址或域名。例如: DBI:Sybase:server=133.109.55.2 。 freetds的数据源配置文件所在位置可能是如下几个(这个位置取决于编译freetds时设置的路径): /etc/freetds/freetds.conf (Utuntu Linux 10.04 LTS的默认路径) /usr/local/etc/freetds.conf 注: 如果找不到可以用命令 find / -name freetds.conf 来查找。
示例程序:
#!/usr/local/bin/perl
# use DBI;
my $user = "sa";
my $passwd = "passwd";
#
# Note: sql133 can be a ip address, for example 133.108.55.2
#
my $dbh = DBI->connect("DBI:Sybase:server=sql133", $user, $passwd, {PrintError => 0});
$dbh->do("use Northwind");
unless ($dbh)
{
die "Unable for connect to server $DBI::errstr";
}
my $sqlStatement = " select * from saldb..user_part";
$sth = $dbh->prepare($sqlStatement); $sth->execute;
while ( ( $lastname , $firstname, $title) = $sth->fetchrow_array )
{
printf ("%s, %s (%s) ", $lastname, $firstname, $title);
}
$rows = $sth->rows; print "Rows returned: $rows ";
exit(0);
注: Microsoft SQL Server 7.0 = FreeTDS version =7.0 Microsoft SQL Server 2000, 2005 = FreeTDS version =8.0
参见: http://www.idevelopment.info/data/MSSQL/DBA_tips/Programming/PROG_2.shtml