MySQL Perl API.docx

上传人:b****6 文档编号:6452154 上传时间:2023-01-06 格式:DOCX 页数:9 大小:19.30KB
下载 相关 举报
MySQL Perl API.docx_第1页
第1页 / 共9页
MySQL Perl API.docx_第2页
第2页 / 共9页
MySQL Perl API.docx_第3页
第3页 / 共9页
MySQL Perl API.docx_第4页
第4页 / 共9页
MySQL Perl API.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

MySQL Perl API.docx

《MySQL Perl API.docx》由会员分享,可在线阅读,更多相关《MySQL Perl API.docx(9页珍藏版)》请在冰豆网上搜索。

MySQL Perl API.docx

MySQLPerlAPI

MySQLPerlAPI

本节记载了PerlDBI接口。

以前的接口被称为mysqlperl。

因为DBI/DBD现在是推荐的Perl接口,mysqlperl是过时的并且不在这里记载。

1DBI与DBD:

:

mysql

DBI是对于很多数据库的一个通用接口。

这意味着你能编写一个脚本,不用改变就能工作于很多数据库引擎。

你需要为每种数据库类型定义了的一个数据库驱动程序(DBD)。

对于MySQL,该驱动程序称为DBD:

:

mysql。

有关Perl5DBI的更多信息,请访问DBI网页并且阅读文档:

http:

//www.symbolstone.org/technology/perl/DBI/index.html

关于在Perl5定义的面向对象的编程(OOP)的更多信息,参见PerlOOP页:

对于MySQLPerl支持的安装指令在4.10Perl安装说明中给出。

2DBI接口

可移植的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

最大可能的列大小

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_USER和DBI_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

在客户和服务器之间使用压缩通信(MySQL3.22.3或以后)。

mysql_socket=/path/to/socket

指定用于与服务器连接的Unix套接字的路径名(MySQL3.21.15或以后)。

可以给出多个修饰词;每一个必须前置一个分号。

例如,如果你想要避免在一个DBI脚本中硬编码用户名和口令,你可以从用户的“~/f”选项文件中取出它们,而不是这样编写你的connect调用:

$dbh=DBI->connect("DBI:

mysql:

$database"

.";mysql_read_default_file=$ENV{HOME}/f",

$user,$password);

这个调用将读取在选项文件中为[client]组而定义的选项。

如果你想做同样的事情,但是也使用未[perl]组指定的选项,你可以使用:

$dbh=DBI->connect("DBI:

mysql:

$database"

.";mysql_read_default_file=$ENV{HOME}/f"

.";mysql_read_default_group=perl",

$user,$password);

disconnect

disconnect方法从数据库断开数据库句柄。

它一般就在你从程序退出之前被调用。

范例:

$rc=$dbh->disconnect;

prepare($statement)

准备一条由数据库引擎执行的SQL语句并且返回语句句柄($sth),你可以使用它调用execute方法。

一般地你借助于prepare和execute来处理SELECT语句(和类SELECT语句,例如SHOW、DESCRIBE和EXPLAIN)。

范例:

$sth=$dbh->prepare($statement)

ordie"Can'tprepare$statement:

$dbh->errstr\n";

execute

execute方法执行一个准备好的语句。

对非SELECT语句,execute返回受影响的行数。

如果没有行受影响,execute返回"0E0",Perl将它视作零而不是真。

对于SELECT语句,execute只是在数据库中启动SQL查询;你需要使用在下面描述的fetch_*方法之一检索数据。

范例:

$rv=$sth->execute

ordie"can'texecutethequery:

$sth->errstr;

do($statement)

do方法准备并且执行一条SQL语句并且返回受影响的行数。

如果没有行受到影响,do返回"0E0",Perl将它视为零而不是真。

这个方法通常用于事先无法准备好(由于驱动程序的限制)或不需要执行多次(插入、删除等等)的非SELECT语句。

范例:

$rv=$dbh->do($statement)

ordie"Can'texecute$statement:

$dbh->errstr\n";

quote($string)

quote方法被用来“转义”包含在string中的任何特殊字符并增加所需的外部的引号。

范例:

$sql=$dbh->quote($string)

fetchrow_array

这个方法取下一行数据并且作为一个字段值数组返回它。

范例:

while(@row=$sth->fetchrow_array){

printqw($row[0]\t$row[1]\t$row[2]\n);

}

fetchrow_arrayref

这个方法取下一行数据并且作为一个对一个字段值数组的引用返回它。

范例:

while($row_ref=$sth->fetchrow_arrayref){

printqw($row_ref->[0]\t$row_ref->[1]\t$row_ref->[2]\n);

}

fetchrow_hashref

这个方法取一行数据并且返回包含字段名/值对的一个哈希表的一个引用。

这个方法不如使用上述数组引用那样有效。

范例:

while($hash_ref=$sth->fetchrow_hashref){

printqw($hash_ref->{firstname}\t$hash_ref->{lastname}\t\

$hash_ref->title}\n);

}

fetchall_arrayref

这个方法被用来获得从SQL语句被返回的所有数据(行)。

它返回一个数组的引用,该数组包含对每行的数组的引用。

你用一个嵌套循环来存取或打印数据。

范例:

my$table=$sth->fetchall_arrayref

ordie"$sth->errstr\n";

my($i,$j);

for$i(0..$#{$table}){

for$j(0..$#{$table->[$i]}){

print"$table->[$i][$j]\t";

}

print"\n";

}

finish

便名没有更多的数据将从这个语句句柄取出。

你调用这个方法释放语句句柄和任何与它相关的系统资源。

范例:

$rc=$sth->finish;

rows

返回由最后一条命令改变(更新、删除等)的行数。

这通常用在非SELECT的execute语句之后。

范例:

$rv=$sth->rows;

NULLABLE

返回一个对一个布尔值数组的引用;对数组的每个成员,一个TRUE值表示该列可以包含NULL值。

范例:

$null_possible=$sth->{NULLABLE};

NUM_OF_FIELDS

这个属性表明由一条SELECT或SHOWFIELDS语句返回的字段数目。

你可以用它检查一条语句是否返回了结果:

一个零值表明一个象INSERT、DELETE或UPDATE的非SELECT语句。

范例:

$nr_of_fields=$sth->{NUM_OF_FIELDS};

data_sources($driver_name)

这个方法返回一个数组,它包含在主机'localhost'上的MySQL服务器可得到的数据库名。

范例:

@dbs=DBI->data_sources("mysql");

ChopBlanks

这个属性确定fetchrow_*方法是否将去掉返回值的头和尾的空白。

范例:

$sth->{'ChopBlanks'}=1;

trace($trace_level)

 

trace($trace_level,$trace_filename)

trace方法开启或关闭跟踪。

当作为一个DBI类方法调用时,它影响对所有句柄的跟踪。

当作为一个数据库或语句句柄方法调用时,它影响对给定句柄的跟踪(和句柄的未来子孙)。

设置$trace_level为2以提供详细的踪迹信息,设置$trace_level为0以关闭跟踪。

踪迹输出缺省地输出到标准错误输出。

如果指定$trace_filename,文件以添加模式打开并且所有跟踪的句柄的手被写入该文件。

范例:

DBI->trace

(2);#traceeverything

DBI->trace(2,"/tmp/dbi.out");#traceeverythingto/tmp/dbi.out

$dth->trace

(2);#tracethisdatabasehandle

$sth->trace

(2);#tracethisstatementhandle

你也可以通过设置DBI_TRACE环境变量开启DBI跟踪。

将它设置为等价于调用DBI->(value)的数字值,将它设置为等价于调用DBI->(2,value)的路径名。

MySQL特定的方法

下面显示的方法是MySQL特定的并且不是DBI标准的部分。

他们中有几个现在不建议使用:

is_blob、is_key、is_num、is_pri_key、is_not_null、length、max_length和table。

这些已有DBI标准的另一种方法存在,他们在下面说明。

insertid

如果你使用MySQL的AUTO_INCREMENT功能,新的自动加1的值将存储在这里。

范例:

$new_id=$sth->{insertid};

作为另一种选择,你可以使用$dbh->{'mysql_insertid'}。

is_blob

返回一个对一个布尔值数组的引用;对数组的每个单元,一个TRUE值表明相应的列是一个BLOB。

范例:

$keys=$sth->{is_blob};

is_key

返回一个对一个布尔值数组的引用;对数组的每个单元,一个TRUE值表明相应的列是键。

范例:

$keys=$sth->{is_key};

is_num

返回一个对一个布尔值数组的引用;对数组的每个单元,一个TRUE值表明相应的列包含数字值。

范例:

$keys=$sth->{is_key};

is_pri_key

返回一个对一个布尔值数组的引用;对数组的每个单元,一个TRUE值表明相应的列是主键。

范例:

pri_keys=$sth->{is_pri_key};

is_not_null

返回一个对一个布尔值数组的引用;对数组的每个单元,一个FALSEE值表明该列可以包含NULL值。

范例:

$not_nulls=$sth->{is_not_null};

is_not_null不建议使用;最好使用NULLABLE属性(在上面描述了),因为那是一个DBI标准。

length

 

max_length

这些方法的每个返回一个对列大小数组的引用。

length数组指出每列可以有的最大可能的尺寸(如在表描述中声明的)。

max_length数组指出在结果表中实际存在的最大尺寸。

范例:

$lengths=$sth->{length};

$max_lengths=$sth->{max_length};

NAME

返回一个对一个列名数组的引用。

范例:

$names=$sth->{NAME};

table

返回一个对一个表名数组的引用。

范例:

$tables=$sth->{table};

type

返回一个对一个列类型数组的引用。

范例:

$types=$sth->{type};

3更多的DBI/DBD信息

你可以使用perldoc命令得到更多的关于DBI的信息。

perldocDBI

perldocDBI:

:

FAQ

perldocDBD:

:

mysql

你也可以使用pod2man、pod2html等工具转换到其他格式。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1