mysql - Perl 数据库交互

标签 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__
<小时/>

最佳答案

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

use GUI::DB;

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

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

关于mysql - Perl 数据库交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21951694/

相关文章:

Mysql CASE 和 UPDATE

将 1 个字段复杂地移动到另一个数据库中的字段中需要 mysql 查询

python - db 游标 - python 中的事务

php - 实现大量表和大数据集的最佳方法是什么

MySQL:如何查询父子关系?

regex - 将字符串与 perl 中的模式对齐?

mysql - SequelizeBase错误: ER_CANT_CREATE_TABLE in Node App

php - 如何通过 FTP 安装具有 MySQL 数据库/登录的 PhpMyAdmin

database - Perl 数据库数据传输、csv、tsv

启动 PhantomJS 时出现 Perl 错误 "selenium server did not return proper status"