Chinaunix首页 | 论坛 | 博客
  • 博客访问: 195843
  • 博文数量: 21
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 657
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-05 19:07
文章分类
文章存档

2009年(6)

2008年(15)

我的朋友

分类:

2008-12-11 16:53:16

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函数。
 
 
 
阅读(1512) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~