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

Perl DBI 基础

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

导读: 在确定矩阵的维数时,必须首先确定行数,因为无论这个矩阵是否为空,都可能计算列数。如果$rows 为0,则这个矩阵为空,并且$cols 也为0。否则,列数可能作为行数组中的元素数量来计算,用语法@{$matrix[$i]} 来整体访问行$ i。 在前述的样例中, 我们提取每一行, 然后保存对它的引用。可以设想调用fetchrow_arrayref( ) 而不是直接地检索行引用可能更有效率: 它不能正常工作,因为fetchrow_arrayref( ) 重新使用了引用指向的数组。结果矩阵是一个引用的数组,数组中的每个元素都指向相同行—最后检索的行。因此,如果想一次提取一行,则要使用fetchrow_array( ) 而不是fetchrow_arrayref( )。 另一个选择是使用提取循环,可以使用返回整个结果集的DBI 方法中的一个。例如,fetchall_arrayref( ) 返回对引用数组的引用,数组的每个元素都指向结果集中某行。这非常简单,但很有效,这个返回值是对矩阵的引用。要想使用fetchall_arrayref( ),则调用pr

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


    在确定矩阵的维数时,必须首先确定行数,因为无论这个矩阵是否为空,都可能计算列数。如果$rows 为0,则这个矩阵为空,并且$cols 也为0。否则,列数可能作为行数组中的元素数量来计算,用语法@{$matrix[$i]} 来整体访问行$ i。
    在前述的样例中, 我们提取每一行, 然后保存对它的引用。可以设想调用fetchrow_arrayref( ) 而不是直接地检索行引用可能更有效率:

    它不能正常工作,因为fetchrow_arrayref( ) 重新使用了引用指向的数组。结果矩阵是一个引用的数组,数组中的每个元素都指向相同行—最后检索的行。因此,如果想一次提取一行,则要使用fetchrow_array( ) 而不是fetchrow_arrayref( )。
    另一个选择是使用提取循环,可以使用返回整个结果集的DBI 方法中的一个。例如,fetchall_arrayref( ) 返回对引用数组的引用,数组的每个元素都指向结果集中某行。这非常简单,但很有效,这个返回值是对矩阵的引用。要想使用fetchall_arrayref( ),则调用prepare( )和execute( ),然后如下检索结果:

    如果结果集为空,则fetchall_arrayref( ) 返回一个对空数组的引用。如果出现错误,则结果为un d e f,所以如果没有启用R a i s e E r r o r,则在开始使用它以前,要确保检查返回值。
    行数和列数由矩阵是否为空来确定。如果想作为一个数组访问这个矩阵的整个行$ i,应该使用语法@ { $ m a t r i x _ r e f - > [ $ i ] }。
    使用fetchall_arrayref( ) 来检索结果集当然比编写一个提取行的循环要更简单一些,尽管访问数组元素的语法是一个小技巧。一个与fetchall_arrayref( ) 方法相类似,但却做了更多工作的方法是selectall_arrayref( )。这个方法为您完成了整个prepare( )、execute( )、提取循环、finish( ) 序列。为了使用selectall_arrayref( ),应该利用数据库句柄直接将查询传递给它:

    5. 检查NULL 值
    从数据库中检索数据时,可能需要区分值为NULL 、为0 或者为空字符串的列。因为DBI 返回NULL 列值作为un d e f,所以这种区分是容易的。然而,必须确保使用正确的测试。如果试用下面的代码段,则它所有三次显示都为“ f a l s e !”:

    而且,对于这两个测试,这段代码都显示“ f a l s e !”:

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