【发布时间】:2015-03-17 01:27:23
【问题描述】:
您有一个名为 Pets 的表格:
name age pet
------------------------
Carol 25 null
Stean 23 cat
Mel 24 dog
Rich 24 rabbit
在服务器 mydbserver 上的 MySQL 数据库中,用户为 'user' “密码”的密码。
执行以下操作:
1) 使用上述凭据 (DBI.pm) 创建到此数据库的 Class::DBI 连接。
2) 为表 Pets ( Pet.pm ) 创建一个类
3) 创建一个程序,打印 Pets 表中所有人的姓名以及种类(如果有) 他/她按名称然后年龄排序的宠物。
这是我写的代码.....
#!/usr/bin/perl
package Pet::DBI;
use DBI;
use strict;
use base 'Class::DBI';
Pet::DBI->set_db('Main','dbi:mysql:dname', 'user', 'password')
or die $DBI::errstr "\n";
1;
package Pet::Pets;
use base 'Pet::DBI';
use strict;
use warning;
Pet::Pets->table('Pets');
Pet::Pets->columns(All => qw/name age pet/);
1;
use Pet::Pets;
my @pets = Pet::Pets->retrieve_all;
for (sort {$a->name cmp $b->name} || {$a->age <=> $b->age} @Pets) {
print "Name:".$_->name ' => '."Age". $_->age"\n";
}
1;
【问题讨论】:
-
如果可能,请考虑DBIx::Class。 Class::DBI 不再维护,按照现代标准,它不是一个很好的 ORM。我应该知道,I wrote it。还有,这是作业吗?如果是,请让老师知道作者说停止使用 Class::DBI。 :) 最后,Class::DBI 文档已经包含an example of doing exactly this。
-
谢谢,不幸的是他们坚持使用 Class::DBI 而不是 DBIx::Class 应用程序使用它。
-
我想知道第3个问题的答案。我得到了前 2 个问题。
-
“他们”是谁?他们为什么坚持使用受支持的软件?这听起来不是个好建议?
-
@Dave Cross 我同意,但是您如何看待使用 Class::dbi 进行排序?