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

Perl DBI 基础

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

导读: 当想调试有故障的DBI 脚本时,通常使用两项技术,即单独使用一个或一前一后地配合使用。首先,在脚本的整个过程中编写显示语句。它允许将自己调试的输出设计为想要的方式,但必须手工地增加语句。其次,可以使用DBI 的内建跟踪能力。这更加通用,但也更加系统,而且它在打开以后,则会自动地出现。DBI 跟踪也说明一些除此以外就无法获得的有关驱动程序的操作信息。 1. 使用显示语句调试 在MySQL邮件清单中,常见问题之一是:“有一个查询,当我在mysql中执行它时运行得很好,但是它不能在我的DBI 脚本中工作,怎么回事?”寻找发布不同查询的DBI 脚本和这个发问者所期望的一样是很平常的。如果在执行它之前显示查询,则可能会惊异地看到真正发送到这个服务器上的内容。假设将一个查询键入到mysql中(没有终止的分号) 然后,在DBI 脚本中试着做相同的事情: 尽管它是同样的查询,但它不能工作。不是吗?试着显示: print "$query\n" 结果如下: INSERT member (last_name,first

Perl DBI 基础,标签:sql数据库教程,access数据库教程,http://www.xxk123.com

    当想调试有故障的DBI 脚本时,通常使用两项技术,即单独使用一个或一前一后地配合使用。首先,在脚本的整个过程中编写显示语句。它允许将自己调试的输出设计为想要的方式,但必须手工地增加语句。其次,可以使用DBI 的内建跟踪能力。这更加通用,但也更加
系统,而且它在打开以后,则会自动地出现。DBI 跟踪也说明一些除此以外就无法获得的有关驱动程序的操作信息。
    1. 使用显示语句调试
    在MySQL邮件清单中,常见问题之一是:“有一个查询,当我在mysql中执行它时运行得很好,但是它不能在我的DBI 脚本中工作,怎么回事?”寻找发布不同查询的DBI 脚本和这个发问者所期望的一样是很平常的。如果在执行它之前显示查询,则可能会惊异地看到真
正发送到这个服务器上的内容。假设将一个查询键入到mysql中(没有终止的分号)

    然后,在DBI 脚本中试着做相同的事情:

    尽管它是同样的查询,但它不能工作。不是吗?试着显示:
    print "$query\n"
    结果如下:
    INSERT member (last_name,first_name,expiration)
    VALUES(Brown,Warcia,2002-6-3)
    从这个输出中,可以看到是您忘记了VALUES( ) 列表中这些列值前后的引号。指定查询的正确方法如下:

    或者,可以使用占位符指定查询,并传递这些值,直接插入到do( ) 方法中:

    不幸的是,当做这些的时候,使用显示语句不能看到完整查询的样子,因为直到调用d o ()才能估计占位符的值。当使用占位符时,跟踪可能对调试方法更有帮助。
    2. 使用跟踪调试
    当试图查出脚本不能正确工作的原因时,可以告知DBI 来生成跟踪(调试)信息。跟踪级别范围从0(关闭)到9(最多信息)。一般来说,跟踪级别1和2 是最有用的。级别2 跟踪说明正在执行的查询文本(包括占位符替换的结果)、调用quote( ) 的结果等等。这可能对捕获问题有极大的帮助。
    使用trace( ) 方法,可以从独立的脚本内部控制跟踪,或者可以设置DBI_TRACE 环境变量来影响所运行的所有DBI 脚本的跟踪。
    要想使用trace( ) 调用,则传递一个跟踪级别参数,并可以有选择地再传递一个文件名。如果没有指定文件名,则所有的跟踪输出到STDERR 中;否则,它就转到这个命名的文件中。一些样例如下:

    当调用DBI->trace( ) 时,跟踪所有的DBI 操作。一个更精细的方法是,可以用独立的处理级别启用跟踪。当没想好脚本中问题的位置,并对在那点出现的每件事的跟踪输出不想插手时,这是有帮助的。例如,如果特定的SELECT 查询有问题,则可以跟踪与这个查询相关的语句句柄:

上一页  [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