当前位置:学学看123知识中心电脑教学数据库教程Perl DBI 基础» 正文

Perl DBI 基础

[06-11 18:16:12]   来源:http://www.xxk123.com  数据库教程   阅读:8749

导读: 如果启用R a i s e E r r o r(设为非零值),如果在DBI 方法中出现错误,则DBI 调用die( )来显示一条消息并且退出。 如果启用P r i n t E r r o r,在出现DBI错误时,DBI 会调用warn( ) 来显示一条消息,但是相应脚本会继续执行。 缺省时, RaiseError 是禁用的,而PrintError 启用。在此情况下,如果connect( )调用失败,则DBI 显示一条消息,而且继续执行。这样,如果省略connect( ) 的四个参数,则得到缺省的错误处理行为,可以如下检查错误: $dbh=DBI->connect($dsn,$user_name,$password) or exit (1); 如果出现错误,则connect( ) 返回undef 表示失败,并且触发对exit( ) 的调用。因为DBI已经显示了错误消息,所以您就不一定要显示它了。 如果明确给出该错误检查属性的缺省值,可如下调用connect( )。 $dbh=DBI->connect($dsn,$

Perl DBI 基础,标签:sql数据库教程,access数据库教程,http://www.xxk123.com
    如果启用R a i s e E r r o r(设为非零值),如果在DBI 方法中出现错误,则DBI 调用die( )来显示一条消息并且退出。
    如果启用P r i n t E r r o r,在出现DBI错误时,DBI 会调用warn( ) 来显示一条消息,但是相应脚本会继续执行。
    缺省时, RaiseError 是禁用的,而PrintError 启用。在此情况下,如果connect( )调用失败,则DBI 显示一条消息,而且继续执行。这样,如果省略connect( ) 的四个参数,则得到缺省的错误处理行为,可以如下检查错误:
    $dbh=DBI->connect($dsn,$user_name,$password) or exit (1);
    如果出现错误,则connect( ) 返回undef 表示失败,并且触发对exit( ) 的调用。因为DBI已经显示了错误消息,所以您就不一定要显示它了。
    如果明确给出该错误检查属性的缺省值,可如下调用connect( )。
    $dbh=DBI->connect($dsn,$user_name,$password,{RaiseError=>0,PrintError=>1})
    or exit (1);
    这就需要更多的编写工作,但是即使对不经意的读者,处理错误行为也会更为明显。
    如果想自己检查错误,并显示自己的消息,应该禁用RaiseError 和P r i n t E r r o r:

    变量$DBI::err 和$ DBI : :er r s t r,只用于所显示的die( ) 调用中,有助于构造错误消息。它们含有MySQL错误代码和错误字符串,非常像C API 函数中的mysql_errno( ) 和mysql_error( )。
    如果仅仅要DBI 处理错误,以便不必自己检查它们,则启用R a i s e E r r o r:
    $dbh=DBI->connect ($dsn,$user_name,$password,{RaiseError=>1});
    到目前为止,这是最容易的方法,并且是dump_members 带来的。如果在脚本退出时,想要执行某种类型的清除代码,启用RaiseError 可能是不恰当的,尽管在这种情况下,可以重新定义$SIG{_DIE_} 句柄,可以做想做的事情。
    避免启用RaiseError 属性的另一个原因是DBI 在它的消息中显示技术信息,如下:
    disconnect(DBI::db=HASH(0x197aae4)invalidates 1active statement.Either
    destroy statement handles or call finish on them before disconnecting.
    对于编程者来说,这是好的信息,但对普通用户可能没有什么意义。在此情形,最好自己检查错误,以便可以显示对期望使用这个脚本的人更有意义的消息。或者也可在这里考虑重新定义$SIG{_DIE_} 句柄。这样可能很有用,因为它允许启用RaiseError 来使错误处理简单化,而不是用自己的消息替换DBI 给出的缺省错误消息。为了提供自己的_DIE_ 句柄,可在执行任何DBI 调用以前,进行下面的工作:
    $SIG{_DIE_}=sub{die "Sorry,an error occurred\n";};
    也可以用普通的风格定义一个子例程,并利用这个子例程的引用来设置这个句柄值:

    除了在connect( ) 调用中逐字传递错误处理属性之外,还可以利用散列定义它们,并传递对这个散列的引用。有人发现以这种方式准备属性设置使脚本更容易阅读和编辑,但是在功能上这两种方法是相同的。下面是一个说明如何使用属性散列的样例:

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17]  下一页


Tag:数据库教程sql数据库教程,access数据库教程电脑教学 - 数据库教程
前一篇:ORACLE函数大全
《Perl DBI 基础》相关文章

Copyright 学学看123 All Right Reserved.

1 2 3 4 5 6 7 8 9 10