本次章节将介绍如何用Ruby来访问数据库。类似的Perl DBI模块为Ruby脚本的Ruby DBI模块提供了一种数据库(这里用MySQL讲解)独立的接口。
DBI代表数据库无关的接口为RubyDBI提供的Ruby代码和底层数据库之间的抽象层,允许你真的很容易切换数据库实现。它定义了一套方法,变量和约定来提供一致的数据库接口,独立于实际使用的数据库。
DBI可以连接以下:
ADO (ActiveX Data Objects)
DB2
Frontbase
mSQL
MySQL
ODBC
Oracle
OCI8 (Oracle)
PostgreSQL
Proxy/Server
SQLite
SQLRelay
DBI应用程序的体系结构
DBI是独立于现有的任何数据库后端。可以使用DBI操作使用Oracle,MySQL或Informix等,以下是架构示意图。
Ruby的DBI一般架构为使用两个层次:
数据库接口(DBI)层。这一层是独立于数据库,并提供了一组共同的访问方法所,使用的相同的方式而不管是什么样的数据库服务器。
(DBD)的数据库驱动程序层。这一层是依赖于数据库,不同的驱动程序提供了访问不同的数据库引擎。驱动程序用于PostgreSQL,MySQL,InterBase 或 Oracle等等。每个驱动程序解释DBI层的请求,并将它们映射到适用于某一特定类型的数据库服务器的请求。
先决条件:
如果想编写Ruby脚本来访问MySQL数据库,那么需要安装Ruby的MySQL模块。
获取并安装Ruby/DBI:
可以下载并安装Ruby DBI模块从以下位置:
在开始安装之前,请确保有root权限。执行以下步骤:
步骤 1
$ tar zxf dbi-0.2.0.tar.gz
步骤 2
在distrubution目录dbi-0.2.0 和配置setup.rb的脚本在该目录中。最常用的配置命令看起来像这样,不带参数的配置参数。此命令配置分配默认情况下,安装所有的驱动程序。
$ ruby setup.rb config
更具体地,提供了 --with 选项列出想使用的特定部位分布。例如,只配置主DBI模块和 MySQL DBD-level 驱动程序器,请发出以下命令:
$ ruby setup.rb config--with=dbi,dbd_mysql
步骤 3
最后一步是构建驱动程序并安装它使用下面的命令。
$ ruby setup.rb setup
$ ruby setup.rb install
数据库连接:
假设我们要使用MySQL数据库。连接到数据库之前,请确保以下:
已经创建了数据库:TESTDB.
已经创建表 EMPLOYEE 在数据库 TESTDB 中.
这张表有以下几个属性 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME.
用户ID "testuser" 和密码 "test123" 已经设置可以访问数据库 TESTDB
Ruby 模块DBI 在机器上正确安装.
已经通过MySQL教程学习,了解MySQL基础知识和操作。
下面的例子连接MySQL数据库“TESTDB”
#!/usr/bin/ruby -wrequire"dbi"begin# connect to the MySQL serverdbh=DBI.connect("DBI:Mysql:TESTDB:localhost","testuser","test123")# get server version string and display itrow=dbh.select_one("SELECT VERSION()")puts"Server version: "+row[0]rescueDBI::DatabaseError=>e
puts"An error occurred"puts"Error code: #{e.err}"puts"Error message: #{e.errstr}"ensure# disconnect from serverdbh.disconnectifdbhend
当运行这个脚本,它在我的Linux机器产生以下结果。
Serverversion:5.0.45
如果建立一个连接的数据源,然后继续使用,否则 dbh设置为NILL值,e.err的和e::errstr返回错误代码和错误字符串返回,并保存到一个数据库句柄 dbh。最后出来之前,确保关闭数据库连接,并释放资源。