摘要:在本教程中,您将逐步学习如何使用 Perl DBI API 连接到 MySQL 数据库。
让我们开始在 MySQL 中创建一个名为perlmysqldb
的简单数据库来进行演示。
以下CREATE DATABASE
语句在 MySQL 服务器中创建一个新数据库:
CREATE DATABASE perlmysqldb;
Code language: SQL (Structured Query Language) (sql)
连接到 MySQL 数据库
当您连接MySQL数据库时,您需要以下信息:
- 首先,您需要告诉 DBI 在哪里可以找到 MySQL 数据库服务器。这称为数据源名称或 DSN。数据源名称指定要使用的驱动程序和要连接的数据库。 Perl 要求数据源名称以
dbi:
开头,并且需要驱动程序的名称。对于 MySQL,驱动程序名称是mysql
后跟冒号:
例如dbi:mysql:
,然后是数据库名称,例如dbi:mysql:perlmysqldb
。 - 其次,您需要提供连接到数据库的MySQL 用户帐户的用户名和密码。
- 第三,可选的连接属性指定DBI处理连接MySQL数据库时可能发生的异常的方式。
创建 MySQL 数据库连接的语法如下:
$dbh = DBI->connect($dsn,$username,$password,\%attr);
Code language: Perl (perl)
如果成功建立数据库连接, connect()
方法将返回数据库句柄。
例如,要连接到perlmysqldb
数据库,请使用以下脚本:
#!/usr/bin/perl
use strict;
use warnings;
use v5.10; # for say() function
use DBI;
say "Perl MySQL Connect Demo";
# MySQL database configuration
my $dsn = "DBI:mysql:perlmysqldb";
my $username = "root";
my $password = '';
# connect to MySQL database
my %attr = ( PrintError=>0, # turn off error reporting via warn()
RaiseError=>1); # turn on error reporting via die()
my $dbh = DBI->connect($dsn,$username,$password, \%attr);
say "Connected to the MySQL database.";
Code language: Perl (perl)
怎么运行的。
- 一、使用
use DBI;
脚本顶部的声明。 - 接下来,定义一些保存数据源名称、用户名和密码的变量。
- 然后,定义一个包含连接属性的哈希变量。
- 之后,将相应的参数传递给
connect()
方法以创建与perlmysqdb
数据库的连接。 - 最后显示一条消息,表明程序已成功连接MySQL数据库。
以下是脚本的输出:
Perl MySQL Connect Demo
Connected to the MySQL database.
Code language: Shell Session (shell)
处理错误
Perl DBI 允许您手动和/或自动处理错误。 Perl DBI 在错误发生时检测错误,并使用适当的错误消息调用warn()
或die()
函数。
PrintError
属性指示 DBI 调用warn()
函数,该函数将错误显示到输出中。 RaiseError
属性告诉 DBI 在出错时调用die()
函数并立即中止脚本。
Perl DBI 默认启用PrintError
。但是,我们强烈建议您关闭PrintError
属性并打开RaiseError
属性,以指示 DBI 自动处理错误。
如果没有打开RaiseError
,则必须手动处理错误,如下所示:
# withou RasieError off:
my $dbh = DBI->connect($dsn,$username,$password) or
die("Error connecting to the database: $DBI::errstr\n");
Code language: Perl (perl)
当发生错误时,DBI 将错误消息存储在$DBI::errstr
变量中。基本上,上面的语句意味着如果与数据库的连接失败,它会显示错误消息并立即中止脚本。
打开RaiseError
属性的另一个好处是代码看起来更具可读性,因为您不必在调用 DBI 方法的任何地方都包含or die()
语句。
断开与 MySQL 数据库的连接
如果您不再与 MySQL 数据库交互,则应显式断开连接。这是一个很好的做法。
要关闭数据库连接,请使用数据库句柄对象的disconect()
方法,如下所示:
# disconnect from the MySQL database
$dbh->disconnect();
Code language: Perl (perl)
在本教程中,您学习了如何使用 Perl DBI API 连接到 MySQL 数据库和断开连接。