处理 SSI 文件时出错
网站工程
 规划发展   网页美工   标记语言   网页编程   Web服务器   广告攻略   开发常识   趋势研究   网站维护   网站数据库   网页设计工具
 论坛
您现在的位置: IT文谷 >> 网站工程 >> 网页编程 >> CGI >> 文章正文
Perl DBI 入门Perl DBI 入门2006-3-27 17:25:12Perl DBI 入门2006-3-27 17:25:12Perl DBI 入门
Perl DBI 入门
Perl DBI 入门Perl DBI 入门2006-3-27 17:25:12Perl DBI 入门2006-3-27 17:25:12Perl DBI 入门
处理 SSI 文件时出错
Perl DBI 入门Perl DBI 入门2006-3-27 17:25:12Perl DBI 入门2006-3-27 17:25:12Perl DBI 入门
目录
基本功能 
建立连线 
选项 
下达 SQL 
进阶功能 
SELECT 述 
高等技巧 
交易机制 
注意事项 
其他资讯 


本文是以 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 off,RaiseError 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 方法. 我们先看看後者如何使用. 

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

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 $sql = qq{ CREATE TABLE employees ( id INTEGER NOT NULL, 
                                       name VARCHAR(128), 
                                       title VARCHAR(128), 
                                       phone CHAR(10) 
                                     ) };
$dbh->do( $sql );
$dbh->commit();
$dbh->disconnect();
    
进阶功能
我们已经学会了连线资料库,错误侦测,以及下达简单的 SQL 述的方法. 是该学一些更有用的程式语法的时候了. 

SELECT 述
在 SQL 的述中,最常使用的指令莫过於 SELECT 述. 为了使用 SELECT,我们应该先 prepare 这一段述,然後进行 execute 动作. 在下面的程式片段中,我们都会使用 statement handle $sth 有存取 SELECT 的结果. 

use strict;
use DBI;

my $dbh = DBI->connect( 'dbi:DBMaker:dbsample',
   &
Perl DBI 入门Perl DBI 入门2006-3-27 17:25:12Perl DBI 入门2006-3-27 17:25:12Perl DBI 入门
处理 SSI 文件时出错
  • 上一篇文章:

  • 下一篇文章:
  • 进入论坛讨论

    相关文章
    Visual Basic环境下Video/ Audio压缩数据流播放技术
    VB程序中处理随机事件
    VB编程的必备技巧
    让VB应用程序支持鼠标滚轮
    VB中Winsock控制的UDP协议的使用
    VB7新特性预览
    Visual Basic的未来预告
    [修正] 你想使MSFLEXGRID控件可编辑吗?
    制作半透明窗体
    AnimateWindow API
    从程序中生成Exe文件
    雨滴式的显示图片
    热门文章最新推荐

    版权与免责声明:
    ① 本网转载其他媒体稿件是为传播更多的信息,此类稿件不代表本网观点,版权归原作者所有,本网不承担此类稿件侵权行为的连带责任。
    ② 本站原创文章,转载时请注明出自文谷及作者姓名
    ③在本网BBS上发表言论者,文责自负。
    ④如您因版权等问题需要与本网联络,请在30日内联系 。
    Perl DBI 入门Perl DBI 入门2006-3-27 17:25:12Perl DBI 入门2006-3-27 17:25:12Perl DBI 入门
    Perl DBI 入门Perl DBI 入门2006-3-27 17:25:12Perl DBI 入门2006-3-27 17:25:12Perl DBI 入门

    全站热点
    最新推荐
    处理 SSI 文件时出错
    处理 SSI 文件时出错