Mysql入门系列:Perl DBI基础(2)
2006-12-31 10:49:46 来源:WEB开发网核心提示: 只使用返回行的子集,对其进行随机选择,Mysql入门系列:Perl DBI基础(2)(3),例如,当问及总统出生地时,在前述的样例中, 我们提取每一行,要想出现多个选择的问题,则可以随便地提取一行来选择总统(正确的答案)
只使用返回行的子集,对其进行随机选择。例如,当问及总统出生地时,要想出现多个选择的问题,则可以随便地提取一行来选择总统(正确的答案),然后再从取来干扰的选择中提取若干其他行。
即使确实以连续的次序去处理,也想紧紧抓住整个结果集。如果想经过这些行进行多个传递,这可能是必需的。例如,在统计计算中,可能先浏览一遍结果集,来估计数据的一些通用数字属性,然后再次检查这些行,来实现更加明确的分析。
可以用几个不同的方式作为一个整体访问结果集。可以完成这个常见的提取循环,并在提取它时保存每一行,可以使用一次返回整个结果集的方法。无论哪种方法都以在结果集中包括一行一行的矩阵作为结束,和选择的列一样多。可以以任何次序任意多次地处理矩阵的
元素。下面的讨论说明这两种方法。
使用提取循环来捕获结果集的一种方法是使用fetchrow_array( ) 并保存对这些行引用的数组。除了保存所有的行,然后显示矩阵举例说明了如何确定矩阵中的行数和列数,及如何访问矩阵的个别成员以外,下面的代码和dump_members 中提取和显示的循环作用是一样的。
在确定矩阵的维数时,必须首先确定行数,因为无论这个矩阵是否为空,都可能计算列数。如果$rows 为0,则这个矩阵为空,并且$cols 也为0。否则,列数可能作为行数组中的元素数量来计算,用语法@{$matrix[$i]} 来整体访问行$ i。
在前述的样例中, 我们提取每一行, 然后保存对它的引用。可以设想调用fetchrow_arrayref( ) 而不是直接地检索行引用可能更有效率:
更多精彩
赞助商链接