`
wangminshe89
  • 浏览: 666622 次
文章分类
社区版块
存档分类
最新评论

Perl DBI 入门

 
阅读更多

本文是以 Perl DBI Examples 为蓝本,配合 DBMaker 好学易用的特性,以及几个浅显易懂的例 子,希望能够一步步地带领使用者学习 Perl DBI modules 存取 DBMaker 资料库的方法。而原作者 撰写主要原动力是希望藉由这篇文章的问世,以降低 DBI mailing list 中一再重出现的 FAQ

读完本文之後,我们就能学到利用 DBI 建立一个完备的资料库程式。 以下就先由 DBI 的基本功能 开始,然後再逐步研究改善效能与可靠度技巧。

基本功能

DBI - Database independent interface for Perl. Perl DBI Perl 程式语言存取资料库时的 标准应用程式介面 (API) DBI 中定义了一组函数、变数和一致性的资料库介面, 可满足与特定 资料库无关的特性。

值得一提的,DBI 只是一个程式介面,利用一组十分轻巧的层面, 将你的应用程式与一个以上的资 料库驱动程式紧密地结合在一起, DBI 的架构主要只是提供标准的介面,目的是为了方便使用者下 达一些简单的指令, 就可以轻易地让那些驱动程式发挥作用

首先该做的事就是建构以及安装 DBI 详细的步骤可参考 DBI INSTALL 文件中有说明. 然後再来 就是建构出所需的资料库驱动程式,或是参考 DBD. 在每个 DBD 套件中都应该会有建构程序。 其他 Perl 模组相较之下, 安装 DBI/DBD 步骤算是相当容易

localhost:~/DBI-1.08$ perl Makefile.PL && make

&& make test && make install

DBI DBD 安装完成之後, 您可以执行下列指令阅读更多的资讯:

localhost:~$ perldoc DBI

建立连线

每一种资料库都有不同的连线方式, 若是想知道特殊用法, 请务必阅读 DBD 所提供的说明文 件。 下面的例子是连线到 DBMaker 的基本方法.

use strict;

use DBI;

my $dbh = DBI->connect( 'dbi:DBMaker:dbsample',

'jerry',

'jerrypassword',

);

上述的 connect 函数用到了三个参数: 资料来源名称 (data source name, DSN), 使用者名称和密 码。 其中 DSN 的格式为 dbi:DriverName:instance. 不过我们要如何知道连线成不成功呢? 首先 可以查看 connect 的传回值,true 代表成功,false 就是代表失败。 其次,当有错误发生 时, DBI 会把错误讯息存放在 package variable $DBI::errstr 之中。

use strict;

use DBI;

my $dbh = DBI->connect( 'dbi:DBMaker:dbsample',

'jerry',

'jerrypassword',

)

|| die "Database connection not made: $DBI::errstr";

$dbh->disconnect();

结束资料库连线请使用 disconnect() 函数, 正确地使用可避免错误讯 "Database handle destroyed without explicit disconnect" 的发生.

选项

在连线资料库时 connect() 这个方法可以接受 hash 型态的选项,常用的选项包括 : AutoCommit,设为 true 表示资料库交易自动确认; RaiseError,告诉 DBI 在错误发生时触 发例外 croak $DBI::errstr 而不只是仅传回错误代码;PrintError,让 DBI 以警告方 warn $DBI::errstr 传回错误讯息.

在下一段程式中,是希望进行采交易处理的用法,设定成 AutoCommit offRaiseError on,而 PrintError 使用内定值 on.

use strict;

use DBI;

my $dbh = DBI->connect( 'dbi:DBMaker:dbsample',

'jerry',

'jerrypassword',

{

RaiseError => 1,

AutoCommit => 0

}

)

|| die "Database connection not made: $DBI::errstr";

$dbh->disconnect();

有一点要特别注意,如果资料库本身不支援交易处理的功能时,设定 AutoCommit off 会接收到错 误发生的传回值.

下达 SQL

现在开始可以对我们的资料库做一些有意义的事了. 下达至资料库的 SQL 述分成两类. 一是查询指 令,预期会有数笔资料传回,例如 SELECT,这一类的指令我们会使用 prepare 方法. 另一类的指 令,如 CREATE DELETE,我们会使用 do 方法. 我们先看看後者如何使用.

这一段程式示在资料库中建立一个员工资料表格的方法.

#!/usr/bin/perl -w

use strict;

use DBI;

my $dbh = DBI->connect( 'dbi:DBMaker:dbsample',

'jerry',

'jerrypassword',

{

RaiseError => 1,

AutoCommit => 0

}

)

|| die "Database connection not made: $DBI::errstr";

my @records = (

[ 0, "Larry Wall", "Perl Author", "555-0101" ],

[ 1, "Tim Bunce", "DBI Author", "555-0202" ],

[ 2, "Randal Schwartz", "Guy at Large", "555-0303" ],

[ 3, "Doug MacEachern", "Apache Man", "555-0404" ]

);

my $sql = qq{ INSERT INTO employees VALUES ( ?, ?, ?, ? ) };

my $sth = $dbh->prepare( $sql );

for( @records ) {

eval {

$sth->bind_param( 1, @$_->[0]);

$sth->bind_param( 2, @$_->[1]);

$sth->bind_param( 3, @$_->[2]);

$sth->bind_param( 4, @$_->[3]);

$sth->execute();

$dbh->commit();

};

if( $@ ) {

warn "Database error: $DBI::errstr/n";

$dbh->rollback(); #just die if rollback is failing

}

}

$sth->finish();

$dbh->disconnect();

注意事项

关於 finish 的呼叫在我们的例子并不是必要的. 这个函数适用於 statement handle 完成时所使 用。

永远要加上 use strict

仔细阅读 Perl DBI manual 以深入解 DBI 架构

其他资讯

DBI - A Database Interface Module for Perl 5

DBI at Hermetica

DBI mailing list information

DBI mailing list archives

Persistent connections with mod_perl

分享到:
评论

相关推荐

    Perl DBI 参考(强烈推荐)

    DBI 数据类型 一个简单的DBI 脚本 处理错误 .....

    Programming Perl DBI 8

    Programming Perl DBI 8

    Perl DBI中文手册 pdf.rar

    Perl DBI手册中文翻译版 pdf,Perl DBI中文帮助文档,内容涉及Perl DBI名称、概述、描述、DBI类、处理器通用方法、通用属性、DBI数据库处理对象、数据库处理方法等。

    perl DBI.doc

    这是一篇对perl中关于DBI操作,简单容易理解!

    关于perl DBI的方法使用

    对perl DBI一些方法的介绍。介绍的还可以,有点帮助!

    Perl-DBI编程

    Perl-DBI编程,dbi开发必备资料

    perl的DBI安装包以及安装步骤

    该资源为Perl的安装包以及安装步骤,方便linux环境安装perl的DBI,解决在linux环境下使用perl连接数据库的问题。

    perl DBI手册 中文翻译版

    读懂perl语言与数据库接口的无上'神器'资料

    PERL_DBI手册

    perl_dbi基本概念,处理方法等。 包含dbi类,dbi方法,已有的驱动方法。 相关的例子等。

    PERL_DBI手册.pdf

    perl的DBI使用手册,详细描述了如何连接数据库,如何使用dbi模块,对于使用perl语言进行运维,开发的小伙伴希望带来帮助

    Perl DBI编程.pdf

    DBI是Perl数据库编程的主要接口。它与数据库产品无关,且为几乎所有的数据库产品提供了一致的子例程集。DBI将实际的数据库驱动程序与API分离,这样DBI程序可以处理任何数据库,甚至可以同时处理不同厂商的多个数据库...

    Perl DBI API

    Perl DBI Overview Chapter 7. The Perl DBI API Part II Using MySQL Programming Interfaces MySQL SQL eTutorials

    perl-DBI-1.52-2.el5.i386.rpm

    perl-DBI-1.52-2.el5.i386.rpm

    Perl.DBI手册中文翻译版.pdf

    Perl DBI手册中文翻译版 pdf,Perl DBI中文帮助文档,内容涉及Perl DBI名称、概述、描述、DBI类、处理器通用方法、通用属性、DBI数据库处理对象、数据库处理方法等。

    Perl DBI手册中文翻译版

    Perl DBI是一个Perl语言的数据库访问API。DBI定义了一系列函数,变量和惯例提供一个独立于具体数据库的一致性的数据库接口。 记住DBI仅仅是一个接口是很重要的。在应用程序和一个/多个数据库驱动器之间的一个瘦层。...

    Perl DBI编程(chm)

    Table of Contents Copyright Page Dedication Preface Chapter 1: Introduction Chapter 2: Basic Non-DBI Databases Chapter 3: SQL and Relational Databases Chapter 4: Programming ...

    单兴华CTO-学习Mysql经典教程-附录G Perl DBI API 参考.pdf

    单兴华CTO-学习Mysql经典教程-第07章Perl DBI API.pdf 单兴华CTO-学习Mysql经典教程-第08章PHP API.pdf 单兴华CTO-学习Mysql经典教程-第09章MySQL 管理介绍.pdf 单兴华CTO-学习Mysql经典教程-第10章MySQL 数据目录....

    MySQL事务预编译查询和Perl DBI简化

    许多WEB应用程序内部通常重复运行带不同自变量的相同数据库查询,或以全有或全无块的形式 执行一组相关查询。...本文讨论了支持MySQL事务和预编译查询的Perl DBI函数,并对其工作原理和应用方法进行说明。

    单兴华CTO-学习Mysql经典教程-第07章Perl DBI API.pdf

    单兴华CTO-学习Mysql经典教程-第07章Perl DBI API.pdf 单兴华CTO-学习Mysql经典教程-第08章PHP API.pdf 单兴华CTO-学习Mysql经典教程-第09章MySQL 管理介绍.pdf 单兴华CTO-学习Mysql经典教程-第10章MySQL 数据目录....

    perl-DBI-1.52-2.el5.x86_64

    perl-DBI-1.52-2.el5.x86_64

Global site tag (gtag.js) - Google Analytics