Ruby 数据库访问 - DBI 教程学习笔记

1. DBI 简介

DBI(DataBase Independent interface)是一个Ruby标准库提供的数据库访问模块,它可以使你在Ruby程序中使用不同的关系型数据库,并使用相同的API进行操作。

DBI是一个抽象层,它提供了一个数据库操作的标准API,而具体的数据库驱动则由各个数据库厂商或者社区开发者实现。

无论你使用何种数据库,都可以像使用其他数据库一样来编写Ruby程序,只需要修改配置,而无需重新编写代码。

2. 安装和配置DBI

在使用DBI之前,需要确保已经安装了Ruby以及各种数据库的Ruby驱动程序。

2.1 安装Ruby

在Ubuntu系统上,可以使用以下命令安装Ruby:

Copy Code
$ sudo apt-get update $ sudo apt-get install ruby-full

2.2 安装MySQL驱动

在Ubuntu系统上,可以使用以下命令安装MySQL的Ruby驱动程序:

Copy Code
$ sudo apt-get install libmysqlclient-dev $ sudo gem install mysql

2.3 配置DBI

在Ruby脚本中引入DBI:

rubyCopy Code
require 'dbi'

3. 连接数据库

3.1 MySQL连接示例

rubyCopy Code
require 'dbi' begin # 连接数据库 dbh = DBI.connect("DBI:Mysql:database=test_db;host=localhost", "testuser", "password") # 查询数据 sth = dbh.prepare("SELECT * FROM users WHERE id > ?") sth.execute(10).each do |row| puts row.inspect end rescue DBI::DatabaseError => e puts "Error #{e.err}: #{e.errstr}" ensure # 关闭数据库连接 dbh.disconnect if dbh end

4. DBI API

4.1 DBI 类

4.1.1 connect 方法

连接到数据库。

rubyCopy Code
dbh = DBI.connect(dsn, user, password, opt)

其中,dsn表示连接字符串,user表示用户名,password表示密码,opt是一些附加参数。

4.1.2 disconnect 方法

断开与数据库的连接。

rubyCopy Code
dbh.disconnect

4.2 StatementHandle 类

StatementHandle对象是DBI中最重要的对象之一,用于执行SQL语句,包括查询、插入、修改、删除等操作。

4.2.1 prepare 方法

准备执行SQL语句。

rubyCopy Code
sth = dbh.prepare(sql)

其中,sql表示要执行的SQL语句。

4.2.2 execute 方法

执行SQL语句。

rubyCopy Code
sth.execute(params)

其中,params是一个存放参数值的数组。

4.2.3 fetch 方法

获取查询结果集中的一行数据。

rubyCopy Code
row = sth.fetch

4.2.4 finish 方法

关闭查询并释放资源。

rubyCopy Code
sth.finish

5. 总结

DBI是一个非常强大的数据库访问模块,它可以使你在Ruby程序中使用不同的关系型数据库,并使用相同的API进行操作。通过本文的学习,你了解了如何安装和配置DBI模块,并编写了MySQL连接示例程序。同时,你还了解了DBI类和StatementHandle类的一些常用方法,可以帮助你更好地开发Ruby程序。