Perl DBI

17 Mar 2025 | 6 分钟阅读

在本教程中,我们将看到如何在 Perl 脚本中访问数据库。从 Perl 5 开始,数据库应用程序使用 DBI 模块来访问数据库。

可以使用 DBI 模块在 Perl 脚本中访问数据库。 DBI (数据库独立接口) 在 Perl 代码和数据库之间提供了一个抽象层。

DBI 是一个数据库访问模块,它提供变量和一组方法,用于提供一致的数据库接口,与所使用的实际数据库无关。


Perl DBI 架构

Perl Database access 1

DBI 独立于数据库,可以与 Oracle、MySQL 等一起使用。DBI 通过 API(应用程序编程接口)获取所有 SQL 命令,并将它们转发到相应的驱动程序以供执行。


Perl DBI 连接

我们正在使用 MySQL 数据库。 启动您的 MySQL 服务器。 现在完成以下步骤

  • 创建一个数据库。 我们的数据库名称是“perll”。
  • 在此数据库中创建一个表。 我们创建了一个名为“users”的表,其中包含字段“name”、“course”和“fee”。
  • Perl 模块 DBI 应该正确安装。

成功创建数据库后,使用以下脚本将此数据库与 Perl 文件连接起来。

请看上面的脚本,

dsn -> 数据库源名称

dbh -> 数据库句柄对象

dsn 包含要加载的数据库。 用户是“root”,我们没有为我们的数据库设置任何密码。

dbh 存储数据库句柄对象调用返回。

数据库断开连接命令是可选的,当 $dbh 超出范围时,它将自动调用。


Perl INSERT 到数据库

通过 INSERT 操作,我们将记录传递到我们的数据库表“users”中。 以下脚本允许在数据库中插入单个记录。 您可以使用相同的脚本插入多个记录。

按照以下步骤

  • 将 API prepare() 函数与 SQL insert 语句一起使用。
  • 使用 API execute() 函数从数据库中选择所有结果。
  • 使用 API finish() 函数关闭代码。

Perl 插入绑定值

当需要的值将在运行时获取时,使用绑定值。 要插入数据,我们调用 $dbh->do 方法。 在这里,我们传递 (?) 作为实际数据位置的占位符。 之后是 undef,然后是包含将替换占位符的数据的值。

输出

Name = John, Course = PHP, Fee = 9000 
Name = nisha, Course = Java, Fee = 10000

Perl 读取数据库

READ 记录用于从数据库中获取信息。 一旦我们将一些记录插入到我们的数据库中,我们就可以使用 READ 查询来获取这些记录。

按照以下步骤

  • 将 API prepare() 函数与 SQL SELECT 语句一起使用。
  • 使用 API execute() 函数从数据库中选择所有结果。
  • 使用 API fetchrow_array() 函数来逐个获取并打印所有结果。
  • 使用 API finish() 函数关闭代码。

注意:我们已在表中插入了更多值以执行操作。

输出

Name = John, Course = PHP, Fee = 9000 
Name = nisha, Course = Java, Fee = 10000
Name = Jia, Course = C++, Fee = 8000
Name = Anuj, Course = Java, Fee = 5000
Name = Vishal, Course = PHP, Fee = 8000
Name = Rash, Course = Hadoop, Fee = 4000

Perl 更新数据库

借助 UPDATE 操作,您可以编辑数据库表中存在的信息。

在这里,我们将所有课程中包含“Java”的学生的“course”列更新为 PHP。

按照以下步骤

  • 将 API prepare() 函数与带有必要条件的 SQL UPDATE 语句一起使用。
  • 使用 API execute() 函数从数据库中选择所有结果。
  • 使用 API finish() 函数关闭代码。

输出

Name = John, Course = PHP, Fee = 9000 
Name = nisha, Course = PHP, Fee = 10000
Name = Jia, Course = C++, Fee = 8000
Name = Anuj, Course = PHP, Fee = 5000
Name = Vishal, Course = PHP, Fee = 8000
Name = Rash, Course = Hdoop, Fee = 4000

查看输出,所有 Java 课程都已更新为 PHP。


Perl 删除数据库

执行 DE#LETE 操作以从数据库中删除一些记录。 我们正在删除表中费用为 9000 的所有记录。

按照以下步骤

  • 将 API prepare() 函数与带有必要条件的 SQL DELETE 语句一起使用。
  • 使用 API execute() 函数从数据库中选择所有结果。
  • 使用 API finish() 函数关闭代码。

输出

Name = nisha, Course = PHP, Fee = 10000
Name = Jia, Course = C++, Fee = 8000
Name = Anuj, Course = PHP, Fee = 5000
Name = Vishal, Course = PHP, Fee = 8000
Name = Rash, Course = Hdoop, Fee = 4000

查看输出,所有费用为 9000 的行都已从 SQL 表中删除。


Perl DBI 函数

使用 do 语句

do 语句是在数据库中执行 CRUD 操作的快捷方式。 如果 do 语句成功,则返回 TRUE,如果失败,则返回 FALSE。 以下是显示 do 语句脚本的示例。

使用 COMMIT 操作

给出 commit 命令后,您将无法检索回您所做的更改。 您可以按以下方式调用 commit 命令:

使用 ROLLBACK 操作

如果要恢复操作期间所做的更改,可以调用 rollback API。

使用自动错误处理

通过指定 RaiseError 选项,您的错误将由 DBI 自动处理。 您的程序将在遇到错误时中止,而不是运行失败代码。 RaiseError 的值可以是 1 或 0。

Perl 所有句柄的常用方法

err

它返回上次调用的驱动程序方法中的本机数据库引擎错误代码,该代码通常是一个整数。

DBI 在所有 DBI 方法调用之前将 $h->err 重置为 undef,因此该值的生命周期很短。

errstr

它返回上次调用的 DBI 方法中的本机数据库引擎错误消息。 这与 err 方法的生命周期相同。 返回的值可能包含多个消息,用换行符分隔。

要测试错误,应使用 err 方法。 因为 errstr 方法可能会为未失败的方法返回成功或警告消息。

trace

DBI trace 方法生成运行时跟踪信息,可用于跟踪 DBI 程序中的问题。 可以为跟踪级别设置不同的值。

rows

rows 方法返回上一个 SQL 语句影响的行数。

下一主题Perl 面向对象