通用dbi方法
<table border=1 cellspacing=1 width=624>
<tbody>
<tr>
<td valign=center>
<p align=justify><span class=text1>connect </span></p></td>
<td valign=center>
<p align=justify><span class=text1>建立与一个数据库服务器的连接</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>prepare </span></p></td>
<td valign=center>
<p align=justify><span class=text1>获取准备执行的sql语句</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>do </span></p></td>
<td valign=center>
<p align=justify><span class=text1>准备并执行一个sql语句</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>disconnect </span></p></td>
<td valign=center>
<p align=justify><span class=text1>断开与一个数据库服务器的连接</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>quote </span></p></td>
<td valign=center>
<p align=justify><span class=text1>被插入引用字符串(块)</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>execute </span></p></td>
<td valign=center>
<p align=justify><span class=text1>执行存储过程</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>fetchrow_array </span></p></td>
<td valign=center>
<p align=justify><span class=text1>取出下一行到一个数组之中</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>fetchrow_arrayref </span></p></td>
<td valign=center>
<p align=justify><span class=text1>取出下一行到数组中,返回数组的引用</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>fetchrow_hashref </span></p></td>
<td valign=center>
<p align=justify><span class=text1>取出下一行到哈希表,返回其引用</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>fetchall_arrayref </span></p></td>
<td valign=center>
<p align=justify><span class=text1>取出所有的数据到一个数组,返回其引用。</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>finish </span></p></td>
<td valign=center>
<p align=justify><span class=text1>结束语句、释放系统资源</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>rows </span></p></td>
<td valign=center>
<p align=justify><span class=text1>返回作用的行的数目</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>data_sources </span></p></td>
<td valign=center>
<p align=justify><span class=text1>返回本机中可用的数据库的数组。</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>chopblanks </span></p></td>
<td valign=center>
<p align=justify><span class=text1>去除空格 </span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>num_of_params </span></p></td>
<td valign=center>
<p align=justify><span class=text1>存储过程中占位符的数目</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>nullable </span></p></td>
<td valign=center>
<p align=justify><span
class=text1>哪一个行允许null。</span></p></td></tr></tbody></table><strong>
<p align=justify><span class=text1>mysql 的特殊方法</span></p></strong>
<table border=1 cellspacing=1 width=624>
<tbody>
<tr>
<td valign=center>
<p align=justify><span class=text1>insertid </span></p></td>
<td valign=center>
<p align=justify><span class=text1>最后自动递增的值</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>is_blob </span></p></td>
<td valign=center>
<p align=justify><span class=text1>为blob的行</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>is_key </span></p></td>
<td valign=center>
<p align=justify><span class=text1>为键的行</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>is_num </span></p></td>
<td valign=center>
<p align=justify><span class=text1>为数字的行</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>is_pri_key </span></p></td>
<td valign=center>
<p align=justify><span class=text1>为主键的行</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>is_not_null </span></p></td>
<td valign=center>
<p align=justify><span class=text1>不能为null的行</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>length </span></p></td>
<td valign=center>
<p align=justify><span class=text1>理论上最大的列的数目</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>max_length </span></p></td>
<td valign=center>
<p align=justify><span class=text1>物理上最大的列的数目</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>name </span></p></td>
<td valign=center>
<p align=justify><span class=text1>列名</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>num_of_fields </span></p></td>
<td valign=center>
<p align=justify><span class=text1>返回的字段的数目</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>table </span></p></td>
<td valign=center>
<p align=justify><span class=text1>返回的集中的表的名称</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>type </span></p></td>
<td valign=center>
<p align=justify><span class=text1>行的类型</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>_createdb </span></p></td>
<td valign=center>
<p align=justify><span class=text1>创建一个数据库</span></p></td></tr>
<tr>
<td valign=center>
<p align=justify><span class=text1>_dropdb </span></p></td>
<td valign=center>
<p align=justify><span class=text1>删除一个数据库</span></p></td></tr></tbody></table>
connect
建立与一个数据库服务器的连接
prepare
获取准备执行的sql语句
do
准备并执行一个sql语句
quote
被插入引用字符串(块)
execute
执行存储过程
fetchrow_array
取出下一行到一个数组之中
fetchrow_arrayref
取出下一行到数组中,返回数组的引用
fetchrow_hashref
取出下一行到哈希表,返回其引用
fetchall_arrayref
取出所有的数据到一个数组,返回其引用。
finish
结束语句、释放系统资源
rows
返回作用的行的数目
data_sources
返回本机中可用的数据库的数组。
chopblanks
去除空格
num_of_params
存储过程中占位符的数目
nullable
哪一个行允许null。
mysql 的特殊方法
insertid
最后自动递增的值
is_blob
为blob的行
is_key
为键的行
is_num
为数字的行
is_pri_key
为主键的行
is_not_null
不能为null的行
length
理论上最大的列的数目
max_length
物理上最大的列的数目
name
列名
num_of_fields
返回的字段的数目
table
返回的集中的表的名称
type
行的类型
_createdb
创建一个数据库
_dropdb
删除一个数据库
connect:
使用connect方法建立一个到数据源的连接。$data_source应该以dbi:driver_name:开始,例如:
$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)作为端口号。
prepare:
通过数据库引擎预备sql语句并且返回一个语句句柄($sth)用于参与execute方法,例如:
$sth = $dbh->prepare($statement) or die "can't prepare $statement:
$dbh->errstr\n";
do
do方法预备并执行一个sql语句,返回作用的行的数目,这个方法通常用于非select的语句,同时一般不需要执行多次(例如:insert,delete等)。例如:
$rc = $dbh->do($statement) or
die "can't execute $statement: $dbh- >errstr\n";
disconnect
disconnect将断开与数据库的连接,通常在程序结束的时候使用。例如:
$rc = $dbh->disconnect;
quote
quote方法用于 "escape"任何在字符串中的特定自负,并且加上引用标记。
$sql = $dbh->quote($string)
execute
该方法执行一个存储的语句。对于非select的语句来说,它返回作用的行的数目,对于select语句来说,该方法仅仅是开始了在数据库中查询,你需要fetch_*方法来取回数据。
$rv = $sth->execute or die "can't execute the query: $sth->errstr;
fetchrow_array
这个方法取回下一行的数据,并且将其存储在一个数组之中。例如:
while(@row = $sth->fetchrow_array) {
print qw($row[0]\t$row[1]\t$row[2]\n);
}
fetchrow_arrayref
这个方法取回下一行的数据,并将其返回在一个对数组的引用之中。例如:
while($row_ref = $sth->fetchrow_arrayref) {
print qw($row_ref->[0]\t$row_ref->[1]\t$row_ref->[2]\n);
}
fetchrow_hashref
这个方法取回一行数据,并且返回一个到包含了字段名/值的哈希表的引用。这个方法不如使用一个数组引用的方法有效率。例如:
while($hash_ref = $sth->fetchrow_hashref) {
print qw($hash_ref->{firstname}\t$hash_ref->{lastname}\t\
$hash_ref- > title}\n);
}
fetchall_arrayref
这个方法被用来从一个sql语句的执行结果中取回所有的数据(行)。它返回一个数组的引用,你可以通过一个循环来打印/显示这些数据。
my $table = $sth->fetchall_arrayref or die "$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
返回在(updated,delete等)操作中作用的行的数目。这通常被用在do()或者非select的execute()语句之后。例如:
$rv = $sth->rows;
nullable
返回一个数组的引用,true分别表示这个列可以允许null。
$null_possible = $sth->{nullable};
num_of_fields
通过select或者listfileds语句返回的列的数目。如果数目为0表示一个非select语句的执行,例如,insert,delete或者update等。
$nr_of_fields = $sth->{num_of_fields};
data_sources
这个方法返回在localhost中的mysql服务中可用的数据库的数组。
@dbs = dbi->data_sources("mysql");
chopblanks
这个方法决定了返回的行中是否去除空格。
$sth->{'chopblanks') =1;
<mysql 特定方法>
insertid
如果你使用了mysql的自动增值的特性,那么最新的自动增值将被存储。例如:
$new_id = $sth->{insertid};
is_blob
返回一个数组的引用,true分别表示所指示的列是blob。
$keys = $sth->{is_blob};
is_key
返回一个数组的引用,true分别表示所指示的列是key。
$keys = $sth->{is_key};
is_num
返回一个数组的引用,true分别表示所指示的列包含了数字。
$nums = $sth->{is_num};
is_pri_key
返回一个数组的引用,true分别表示所指示的列是一个主键。
$pri_keys = $sth->{is_pri_key};
is_not_null
返回一个数组的引用,false表示这个列可以包含null,而你最好使用dbi标准中的nullable属性。
$not_nulls = $sth->{is_not_null};
max_length、length
返回一个指示最大列的尺寸的数组的引用。最大长度是指在结果的表中的最大数值,length给出了理论上的最大值。
$max_lengts = $sth->{max_length};
$lengts = $sth->{length};
name
返回一个列名称的数组的引用。
$names = $sth->{name};
table
返回了表名称的数组的引用。
$tables = $sth->{table};
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器