XXXX项目perl使用经验之三(列表接受数据库查询记录)
DBI查询数据分四个步骤:
1.预编译select语句
2.执行语句
3.fetch数据
4.finish
第一、第二、第四步类似于ttclasses的对应操作,就不多说了
关键是第3步fetch
有三种fetch数据库记录的方式:1.用列表接受数据;2.返回指向数据的列表引用;3.返回指向数据的散列引用
本节介绍最简单的一种:用列表接受数据。
@array = $st->fetchrow_array()
如果有记录返回,则会将返回记录copy到@array中,无需指定字段个数和类型。
如果没有记录返回,或者有错,则会返回空列表。
01 #!/usr/bin/perl
02 use strict;
03 use DBI;
04 MAIN:
05 {
06 my ($db, $st,@rowarray);
07 $db = DBI->connect('DBI:TimesTen:DSN=ESCP_CACHE', undef, undef) or die $DBI::errstr;
08
09 $st = $db->prepare("select * from cust_price_plan") or die $DBI::errstr;
10
11 $st->execute() or die $DBI::errstr;
12 while(@rowarray = $st->fetchrow_array())
13 {
14 foreach my $column (@rowarray)
15 {
16 if (!defined($column))
17 {
18 $column = "NULL";
19 }
20 }
21 print "@rowarray\n";
22 }
23 $st->finish();
24 $db->disconnect();
25 }
代码解释:
9.预编译sql语句,类似ttclasses的prepare
11.执行sql语句,类似ttclasses的execute
12.用一个列表来接收一条查询到的记录,从这里可以看到perl的好处:不需要知道具体有几个字段,perl帮你处理这些dirty的事情
14-20.如果一个字段是空,则返回的相应变量是undef,可以用defined函数判断是否为undef。
23.select语句执行完毕之后,在下次执行之前需要用finish函数释放本次查询的结果集。相当于ttclasses的Close函数。
阅读(1568) | 评论(0) | 转发(0) |