MySQL Perl API
本节记载了Perl DBI接口。以前的接口被称为mysqlperl。因为DBI/DBD现在是推荐的Perl接口,mysqlperl是过时的并且不在这里记载。
  1 DBIDBD::mysql
DBI是对于很多数据库的一个通用接口。这意味着你能编写一个脚本,不用改变就能工作于很多数据库引擎。你需要为每种数据库类型定义了的一个数据库驱动程序(DBD)。对于MySQL,该驱动程序称为DBD::mysql
有关Perl5 DBI的更多信息,请访问DBI网页并且阅读文档:
/technology/perl/DBI/index.html
关于在Perl5定义的面向对象的编程(OOP)的更多信息,参见Perl OOP页:
language.perl/info/documentation.html
对于MySQL Perl支持的安装指令在4.10 Perl安装说明中给出。
  2 DBI接口
可移植的DBI方法
connect
建立到一个数据库服务器的连接
disconnect
断开数据库服务器的连接
prepare
准备执行一个SQL语句
execute
执行准备好的语句
do
准备并执行一个SQL语句
quote
加引号于要插入的字符串或BLOB
fetchrow_array
作为一个字段数组取出下一行
fetchrow_arrayref
作为一个字段的引用数组取出下一行
fetchrow_hashref
作为一个哈希表的引用取出下一行
fetchall_arrayref
作为一个字段数组取出所有数据
finish
完成一条语句并且让系统释放资源
rows
返回受影响的行数
data_sources
返回可在localhost上得到的数据库的数组
ChopBlanks
控制fetchrow_*方法是否剥去空格
NUM_OF_PARAMS
在准备的语句中的占位(placeholder-参数)的数目
NULLABLE
其列可以是NULL
trace
执行调试跟踪
MySQL特定的方法
insertid
最后一个AUTO_INCREMENT
is_blob
该列是BLOB
is_key
该列是键
is_num
该列是数字的
is_pri_key
该列是主键
is_not_null
该列不能是NULL,见NULLABLE
length mysql需要安装documentation
最大可能的列大小
max_length
结果中实际上存在的最大列大小
NAME
列名字
NUM_OF_FIELDS
返回的字段数目
table
在返回的集合中的表名
type
所有的列类型
Perl方法在下一节更详细地描述。用于方法返回值的变量有这些含义:
$dbh
数据库句柄
$sth
语句句柄
$rc
返回代码 (经常是一个状态)
$rv
返回值 (经常是一个行数)
可移植DBI方法
connect($data_source, $username, $password)
使用connect方法使得一个数据库连接到数据源。$data_source值应该以DBI:driver_name:开始。以DBD::mysql驱动程序使用connect的例子:
$dbh = DBI->connect("DBI:mysql:$database", $user, $password);
$dbh = DBI->connect("DBI:mysql:$database:$hostname",
                    $user, $password);
$dbh = DBI->connect("DBI:mysql:$database:$hostname:$port",
                    $user, $password);
如果用户名或口令未定义,DBI分别使用DBI_USERDBI_PASS环境变量的值。如果你不指定主机名,它缺省为'localhost'。如果你不指定一个端口号,它缺省为MySQL的缺省端口(3306)。对Msql-Mysql-modules版本1.2009$data_source值允许某些修饰词:
mysql_read_default_file=file_name
读取作为一个选项文件的“filename”。有关选项文件的信息,见4.15.4 选项文件
mysql_read_default_group=group_name
当读取选项文件时的缺省组通常是[client]组。通过指定mysql_read_default_group选项,缺省组变成[group_name]组。
mysql_compression=1
在客户和服务器之间使用压缩通信(MySQL 3.22.3或以后)
mysql_socket=/path/to/socket
指定用于与服务器连接的Unix套接字的路径名(MySQL 3.21.15或以后)
可以给出多个修饰词;每一个必须前置一个分号。例如,如果你想要避免在一个DBI脚本中硬编码用户名和口令,你可以从用户的“~/.myf”选项文件中取出它们,而不是这样编写你的connect调用:
$dbh = DBI->connect("DBI:mysql:$database"
                . ";mysql_read_default_file=$ENV{HOME}/.myf",
                $user, $password);
这个调用将读取在选项文件中为[client]组而定义的选项。如果你想做同样的事情,但是也使用未[perl]组指定的选项,你可以使用:
$dbh = DBI->connect("DBI:mysql:$database"
                . ";mysql_read_default_file=$ENV{HOME}/.myf"
                . ";mysql_read_default_group=perl",
                $user, $password);
 
disconnect
disconnect方法从数据库断开数据库句柄。它一般就在你从程序退出之前被调用。范例:
$rc = $dbh->disconnect;
 
prepare($statement)
准备一条由数据库引擎执行的SQL语句并且返回语句句柄($sth),你可以使用它调用execute方法。一般地你借助于prepareexecute来处理SELECT语句(和类SELECT语句,例如SHOWDESCRIBEEXPLAIN)。范例:
$sth = $dbh->prepare($statement)
    or die "Can't prepare $statement: $dbh->errstr\n";
 
execute
execute方法执行一个准备好的语句。对非SELECT语句,execute返回受影响的行数。如果没有行受影响,execute返回"0E0"Perl将它视作零而不是真。对于SELECT语句,execute只是在数据库中启动SQL查询;你需要使用在下面描述的fetch_*方法之一检索数据。范例:
$rv = $sth->execute
          or die "can't execute the query: $sth->errstr;
 
do($statement)
do方法准备并且执行一条SQL语句并且返回受影响的行数。如果没有行受到影响,do返回"0E0"Perl将它视为零而不是真。这个方法通常用于事先无法准备好(由于驱动程序的限制)或不需要执行多次(插入、删除等等)的非SELECT语句。范例:
$rv = $dbh->do($statement)
        or die "Can't execute $statement: $dbh- >errstr\n";
   
quote($string)
quote方法被用来转义包含在string中的任何特殊字符并增加所需的外部的引号。范例:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。