Perl数据库DBI接口简介【转载】
本文转载自:http://blog.csdn.net/like_zhz/article/details/5441946
##########################################################################
可移植的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 执行调试跟踪
##########################################################################
$dbh 数据库句柄
$sth 语句句柄
$rc 返回代码(经常是一个状态)
$rv 返回值(经常是一个行数)
##########################################################################
①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);
②disconnect
disconnect方法从数据库断开数据库句柄。它一般就在你从程序退出之前被调用。范例:
$rc = $dbh->disconnect;
prepare($statement)
准备一条由数据库引擎执行的SQL语句并且返回语句句柄($sth),你可以使用它调用execute方法。一般地你借助于prepare和execute来处理SELECT语句(和类SELECT语句,例如SHOW、DESCRIBE和EXPLAIN)。范例:
$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中的任何特殊字符并增加所需的外部的引号。范例:
$sql = $dbh->quote($string)
⑥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
返回由最后一条命令改变(更新、删除等)的行数。这通常用在非SELECT的execute语句之后。范例:
$rv = $sth->rows;
⑫NULLABLE
返回一个对一个布尔值数组的引用;对数组的每个成员,一个TRUE值表示该列可以包含NULL值。范例:
$null_possible = $sth->{NULLABLE};
⑬NUM_OF_FIELDS
这个属性表明由一条SELECT或SHOW FIELDS语句返回的字段数目。你可以用它检查一条语句是否返回了结果:一个零值表明一个象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); # trace everything
DBI->trace(2,"/tmp/dbi.out"); # trace everything to /tmp/dbi.out
$dth->trace(2); # trace this database handle
$sth->trace(2); # trace this statement handle
你也可以通过设置DBI_TRACE环境变量开启DBI跟踪。将它设置为等价于调用DBI->(value)的数字值,将它设置为等价于调用DBI->(2,value)的路径名。
Perl数据库DBI接口简介【转载】的更多相关文章
- Windows数据库编程接口简介
数据库是计算机中一种专门管理数据资源的系统,目前几乎所有软件都需要与数据库打交道(包括操作系统,比如Windows上的注册表其实也是一种数据库),有些软件更是以数据库为核心因此掌握数据库系统的使用方法 ...
- Linux中的IO复用接口简介(文件监视?)
I/O复用是Linux中的I/O模型之一.所谓I/O复用,指的是进程预先告诉内核,使得内核一旦发现进程指定的一个或多个I/O条件就绪,就通知进程进行处理,从而不会在单个I/O上导致阻塞. 在Linux ...
- SQLite3 C/C++ 开发接口简介
SQLite3 C/C++ 开发接口简介 1.0 总览 SQLite3是SQLite一个全新的版本,它虽然是在SQLite 2.8.13的代码基础之上开发的,但是使用了和之前的版本不兼容的数据库格式和 ...
- Monte Carlo方法简介(转载)
Monte Carlo方法简介(转载) 今天向大家介绍一下我现在主要做的这个东东. Monte Carlo方法又称为随机抽样技巧或统计实验方法,属于计算数学的一个分支,它是在上世纪四十年代 ...
- DBI接口和DPI接口的区别
1)DBI接口 A,也就是通常所讲的MCU借口,俗称80 system接口.The lcd interface between host processor and LCM device list a ...
- java多线程Lock接口简介使用与synchronized对比 多线程下篇(三)
前面的介绍中,对于显式锁的概念进行了简单介绍 显式锁的概念,是基于JDK层面的实现,是接口,通过这个接口可以实现同步访问 而不同于synchronized关键字,他是Java的内置特性,是基于JVM的 ...
- C语言定义的操作mysql数据库的接口
编写的环境:centos7系统下,对mysql的衍生mariadb进行数据库的操作,包含设置访问数据库的参数,查询数据库和增删改数据库的三个功能.对于查询数据库,我这里允许不返回查询结果,用于判断查询 ...
- SoapUI SoapUI测试WebService协议接口简介
SoapUI测试WebService协议接口简介 by:授客 QQ:1033553122 1. 创建项目,入口:File -> New SOAP Project,或者右键默认项目Project- ...
- soapUI 使用soapUI测试http+json协议接口简介
使用soapUI测试http+json协议接口简介 by:授客 QQ:1033553122 SoapUI-Pro-x64-5.1.2_576025(含破解文件),软件下载地址: http://pan. ...
随机推荐
- Linux后台开发面试问题汇总
个人从事安全后台开发,当然是linux环境下的了.举几个常见的问题.1. 数据结构基础.比如实现一个最简单的哈希表.2. 操作系统基础.linux进程模型,堆/栈的区别,大概的位置,各往哪个方向生长, ...
- 几句话实现导航栏透明渐变 – iOS
首先我们来看下效果 一开始当我们什么只设置了一张图片作为它的头部视图的时候,它是这样的 首当其冲的,我们先得把导航栏弄透明 那么我们首先得知道,设置navigationBar的BackgroundCo ...
- 登录模块需要用到session留底
<% HttpSession sessions=request.getSession(); Object sessionValues=sessions.getAttribute("ui ...
- MySql Connector/Net Mysql like 搜索中文的问题(c#和asp.net连接mysql)
Connector/Net 6.9.8 选择.net/mono即可,不需要安装. 将对应版本的MySql.Data.dll复制到bin目录下即可使用 http://dev.mysql.com/down ...
- Android开发手记(23) Notification
有时候,我们需要应用程序在状态内显示一些通知信息,这时我们就需要使用Notification来完成这一工作.也许我们会想到以前经常使用的Toast来通知用户.虽然Notification与Toast都 ...
- Binary XML file : Error inflating class com.esri.android.map.MapView
在测试esri arcgis for android的第一个程序Helloworld的时候,报这样的错: Binary XML file : Error inflating class com.esr ...
- SQL UPDATE 经典
1 sql中用另一个表的一列来更新数据库表 SELECT TOP 1000 [a] ,[b] ,[c] FROM [单元测试项目].[dbo].[A] SELECT TOP 1000 [a] ,[b] ...
- 四、C#方法和参数
方法是一种组合一系列语句以执行一个特定操作或计算一个特殊结果的方式. 它能够为构成程序的语句提供更好的结构和组织. 在面向对象的语言中,方法总是和类关联在一起的,我们用类将相关的方法分为一组. 方 ...
- VsCode使用技巧
VsCode版本1.7.2 1. node智能提示:vscode1.7之前的版本智能提示是采用jsconfig.json方式,在右下角会有小灯泡,点击创建jsconfig.json.1.7之后使用Ty ...
- win10开始菜单打不开的解决办法
解决方法: 1.在Win10系统下按Win+R打开运行,输入services.msc回车打开服务: 2.在服务中找到User Manager服务;3.打开usermanager服务属性,将其启动类型设 ...