Perl DB交互

时间:2014-02-22 08:19:03

标签: mysql database perl

我刚开始使用Perl。我能够使用我的Perl脚本连接到我的MySQL数据库,创建表并获取查询结果。我遇到了一个涉及“你必须使用提供的DB.pm进行所有数据库交互的任务,你必须按原样使用它(DB.pm除连接设置外不能被修改)。”  那是什么意思?任何人都能引导我朝着正确的方向前进吗?

DB.pm文件包含以下代码

package GUI::DB;

use strict;
use DBI;

use vars qw(@ISA @EXPORT);
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(dbConnect query);

#
# dbConnect - connect to the database, get the database handle
#
sub dbConnect {

        # Read database settings from config file:
        my $dsn = "DBI:mysql:database=test";
        my $dbh = DBI->connect( $dsn,
                '',
                '',
                                { RaiseError => 1 } 
    );

        return $dbh;

}

#
# query - execute a query with parameters
#       query($dbh, $sql, @bindValues)
#
sub query {
        my $dbh = shift;
        my $sql = shift;
        my @bindValues = @_;            # 0 or several parameters

        my @returnData = ();

        # issue query
        my $sth = $dbh->prepare($sql);

        if ( @bindValues ) {
                $sth->execute(@bindValues);
        } else {
                $sth->execute();
        }

        if ( $sql =~ m/^select/i ) {
                while ( my $row = $sth->fetchrow_hashref ) {
                        push @returnData, $row;
                }
        }

        # finish the sql statement
        $sth->finish();

        return @returnData;
}

__END__

1 个答案:

答案 0 :(得分:2)

可能,这意味着,在您的代码中,您必须使用以下内容:

use GUI::DB;

my $dbh = dbConnect();
my $sql = qq{SELECT * FROM my_table};
my @data = query($sql, $dbh);

您通过提供的模块与数据库进行交互。