Windows和Linux系统下perl连接SQL Server数据库的方法
本文将提供一些perl连接microsoft sql server数据库的实例。perl脚本运行在windows和linux平台。
windows平台
如果在windows平台下运行perl脚本,建议使用依赖dbi的两个模块包,提供标准的数据库接口模块。
dbd::odbc
dbd::ado
使用dbd::odbc
如果选用dbd::odbc,下面的实例代码将展示如何连接到sql server数据库:
use dbi;
# dbd::odbc
my $dsn = 'dbi:odbc:driver={sql server}';
my $host = '10.0.0.1,1433';
my $database = 'my_database';
my $user = 'sa';
my $auth = ‘s3cr3t';
# connect via dbd::odbc by specifying the dsn dynamically.
my $dbh = dbi->connect("$dsn;server=$host;database=$database",
$user,
$auth,
{ raiseerror => 1, autocommit => 1}
) || die "database connection not made: $dbi::errstr";
#prepare a sql statement my $sql = "select id, name, phone_number from employees ";
my $sth = $dbh->prepare( $sql );
#execute the statement
$sth->execute();
my( $id, $name, $phone_number );
# bind the results to the local variables
$sth->bind_columns( undef, \$id, \$name, \$phone_number );
#retrieve values from the result set
while( $sth->fetch() ) {
print "$id, $name, $phone_number\n";
}
#close the connection
$sth->finish();
$dbh->disconnect();
你还可以使用预先设置的一个系统dsn来连接。要建立一个系统dsn,可以这样访问控制面板->管理工具->数据源。
使用系统dsn连接,需要更改连接字符串。如下所示:
# connect via dbd::odbc using a system dsn
my $dbh = dbi->connect("dbi:odbc:my_system_dsn",
$user,
$auth,
{
raiseerror => 1,
autocommit => 1
}
) || die "database connection not made: $dbi::errstr";
使用dbd::ado
如果选择dbd::ado模块,下面的实例展示如何连接到sql server数据库。
use dbi;
my $host = '10.0.0.1,1433';
my $database = 'my_database';
my $user = 'sa';
my $auth = ‘s3cr3t';
# dbd::ado
$dsn = "provider=sqloledb;trusted connection=yes;";
$dsn .= "server=$host;database=$database";
my $dbh = dbi->connect("dbi:ado:$dsn",
$user,
$auth,
{ raiseerror => 1, autocommit => 1}
) || die "database connection not made: $dbi::errstr";
#prepare a sql statement
my $sql = "select id, name, phone_number from employees "; my $sth = $dbh->prepare( $sql );
#execute the statement
$sth->execute();
my( $id, $name, $phone_number );
# bind the results to the local variables
$sth->bind_columns( undef, \$id, \$name, \$phone_number );
#retrieve values from the result set
while( $sth->fetch() ) {
print "$id, $name, $phone_number\n";
}
#close the connection
$sth->finish();
$dbh->disconnect();
linux平台
如果是在linux平台下运行perl脚本,连接sql server数据库需要使用到dbd::sybase包。
安装sql server支持库
sybase dbd包依赖freetds驱动程序。
freetds下载地址:www.freetds.org
安装freetds驱动的说明文档参见:http://www.freetds.org/userguide/config.htm
该驱动没有使用到odbc.
配置数据源
修改freetds.conf文件包括sql server数据库信息,如下所示:
[ss_my_db]
host = 10.0.0.1 # or host name port = 1433
tds version = 7.0
安装sybase dbd模块
该模块文档参见:http://search.cpan.org/~mewp/dbd-sybase/sybase.pm
此外,需要将sybase环境变量应设置为freetds安装路径,export sybase=/usr/local/freetds
使用sybase dbi和sql server dsn实例
# load the dbi module
use dbi;
use dbd::sybase;
my $database="my_database";
my $user="sa";
my $auth="s3cr3t";
begin
{
$env{sybase} = "/usr/local";
}
# connect to the sql server database
my $dbh = dbi->connect("dbi:sybase:server=ss_my_db;database=$database",
$user,
$auth
{raiseerror => 1, autocommit => 1}
) || die "database connection not made: $dbi::errstr";
#prepare a sql statement
my $sql = "select id, name, phone_number from employees";
my $sth = $dbh->prepare( $sql );
#execute the statement
$sth->execute();
my( $id, $name, $phone_number );
# bind the results to the local variables
$sth->bind_columns( undef, \$id, \$name, \$phone_number );
#retrieve values from the result set
while( $sth->fetch() ) { print "$name, $title, $phone\n";
}
#close the connection
$sth->finish();
undef $sth; # this fixes a segfault bug with certain versions of dbd::sybase
$dbh->disconnect();
推荐阅读
-
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
-
Windows和Linux双系统下删除Linux系统方法和Windows无法启动问题的快速解决方法
-
linux和windows系统下mysql导入导出sql文件的方法
-
Linux系统下实现远程连接MySQL数据库的方法教程
-
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
-
Windows和Linux双系统下删除Linux系统方法和Windows无法启动问题的快速解决方法
-
Mac下远程连接Linux和Windows服务器的方法
-
Windows和Linux系统下perl连接SQL Server数据库的方法
-
linux和windows系统下mysql导入导出sql文件的方法
-
Linux系统下实现远程连接MySQL数据库的方法教程