使用Perl连接 MySQL

时间:2019-11-20 08:52:38  来源:igfitidea点击:

简介:在本教程中,您将逐步学习如何使用Perl DBI API连接到MySQL数据库。

首先,通过在MySQL中创建一个简单的数据库perlmysqldb进行演示。

CREATE DATABASE perlmysqldb;

连接到MySQL数据库

连接到MySQL数据库时,需要指定以下信息:

  • 首先,您需要告诉DBI在哪里可以找到MySQL数据库服务器。
    此信息称为数据源名称或DSN。
    数据源名称指定要使用的驱动程序,要连接的数据库。
    Perl要求数据源名称以dbi:开头,并且驱动程序的名称为mysql,后跟另一个冒号:例如dbi:mysql:,然后是数据库名称dbi:mysql:perlmysqldb 。

  • 其次,您需要提供连接到数据库的MySQL用户帐户的用户名和密码。

  • 第三,可选的连接属性指定DBI处理连接到MySQL数据库时可能发生的异常的方式。

创建与MySQL数据库的连接的语法如下:

$dbh = DBI->connect($dsn,$username,$password,\%attr);

如果与数据库的连接成功建立,则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.";

这个怎么运作。

  • 首先,使用use DBI;脚本顶部的语句。

  • 接下来,定义一些变量以保存数据源名称,用户名和密码。

  • 然后,定义一个包含连接属性的哈希。

  • 之后,将相应的参数传递给connect()方法以创建与perlmysqdb数据库的连接。

  • 最后,显示一条消息,指示该程序已成功连接到MySQL数据库。

以下是脚本的输出:

Perl MySQL Connect Demo
Connected to the MySQL database.

处理错误

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");

发生错误时,DBI将错误消息存储在$ DBI :: errstr变量中。
基本上,以上语句表示如果与数据库的连接失败,它将显示错误消息并立即中止脚本。

启用RaiseError属性的另一个好处是代码看起来更具可读性,因为您不必在调用DBI方法的任何地方都包含或die()语句。

与MySQL数据库断开连接

如果不再与MySQL数据库进行交互,则应显式断开与它的连接。
这是一个好的编程习惯。

要与数据库断开连接,请使用数据库句柄对象的disconect()方法,如下所示:

# disconnect from the MySQL database
$dbh->disconnect();

在本教程中,您学习了如何使用Perl DBI API与MySQL数据库连接和断开连接。