DBD-ShenTong接口简介¶
Perl语言被称为“实用报表提取语言”(Practical Extraction and Report Language),其最初的设计者是Larry Wall,Perl指的是语言本身,perl指的是程序运行的解释器。Perl语言汲取了很多编程语言的特性,所以如果你有其他语言的编程基础,上手会非常快。它显著的特点是集成的正则表达式和第三方库(CPAN),常用于linux系统处理生物数据,善于处理字符串和批量化。Perl语言相比于C、C#、C++、Java等很简单,对于code的新手来说,上手很容易。
PERL对数据库的支持广而且全,几乎所有的主流数据库都有与之相应的PERL模块支持。为了开发可在不同数据库上移植的PERL应用,DBI(DataBase Interface)模块应运而生,使用这个模块,应用只需使用统一的接口便能操作不同的数据库,真正实现了可移植;当然,这个DBI也配备有相应的开关来支持不同数据库的各种特性。
DBI只是个抽象层,要实现支持不同的数据库,则需要在DBI之下,编写针对不同数据库的驱动。对MySql来说,有DBD::Mysql, 而对ORACLE来说,则是DBD::Oracle,而神通数据库这是DBD:ShenTong其中的DBD这是DataBase Driver的简写。
神通数据库DBD-ShenTong是从访问Oracle的DBD-Oracle移植而来,两者保持使用的高度兼容。DBD-ShenTong依赖ACI接口与数据库进行交互。
DBD-ShenTong安装¶
DBD-ShenTong安装¶
1)DBD-ShenTong源码:$SZ_OSCAR_HOME/drivers/DBD-ShenTong目录下
2)编译安装:
cd DBD-ShenTong
perl Makefile.PL
make
make install
3)安装后,在/usr/local/lib64/perl5/auto/DBD/目录下会有ShenTong目录,比如:
还可以将以下脚本存储为一个check.pl文件中:
#!/usr/bin/perl
use strict;
use ExtUtils::Installed;
my $inst=ExtUtils::Installed->new();
my @modules = $inst->modules();
foreach(@modules){
my $ver = $inst->version($_) || "???";
printf("%-12s -- %s\n",$_,$ver);
}
exit;
执行:perl check.pl,如果DBD-Shentong正常安装,会打印如下信息:
注解
部分老的perl版本不支持上面的检测脚本,可以升级perl解决。
注解
DBD-ShenTong编译依赖当前已经安装的数据库环境,依赖SZ_OSCAR_HOME环境变量,会从$SZ_OSCAR_HOME/aci/include下寻找aci的头文件;从$SZ_OSCAR_HOME/bin下依赖aci库。
使用DBD-ShenTong的样例¶
1)数据库中建表:
Drop table test;
Create table test( a int);
Insert into test values(1);
Insert into test values(2);
2)将以下内容存储为dbtest.pl文件:
#!/usr/bin/perl -w
use strict;
use DBI;
my $host = "localhost"; # 主机地址
my $driver = "ShenTong"; # 接口类型 默认为 localhost
my $database = "osrdb"; # 数据库
# 驱动程序对象的句柄
my $dsn = "DBI:$driver:$host:2003/$database";
my $userid = "sysdba"; # 数据库用户名
my $password = "szoscar55"; # 数据库密码
# 连接数据库
my $dbh = DBI->connect($dsn, $userid, $password ) or die $DBI::errstr;
my $sth = $dbh->prepare("SELECT * FROM test"); # 预处理 SQL 语句
$sth->execute(); # 执行 SQL 操作
# 循环输出所有数据
while ( my @row = $sth->fetchrow_array() )
{
print join('\t', @row)."\n";
}
$sth->finish();
$dbh->disconnect();
3)执行dbtest.pl:
perl dbtest.pl
执行结果:
[root@qt596 perl]# perl dbtest.pl
1
2