Ruby MySQL DBI实例

本文转至:http://www.yiibai.com/html/ruby/2013/0823189.html

本次章节将介绍如何用Ruby来访问数据库。类似的Perl DBI模块为Ruby脚本的Ruby DBI模块提供了一种数据库(这里用MySQL讲解)独立的接口。

DBI代表数据库无关的接口为Ruby DBI提供的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 Architecture

Ruby的DBI一般架构为使用两个层次:

  • 数据库接口(DBI)层。这一层是独立于数据库,并提供了一组共同的访问方法所,使用的相同的方式而不管是什么样的数据库服务器。

  • (DBD)的数据库驱动程序层。这一层是依赖于数据库,不同的驱动程序提供了访问不同的数据库引擎。驱动程序用于PostgreSQL,MySQL,InterBase 或 Oracle等等。每个驱动程序解释DBI层的请求,并将它们映射到适用于某一特定类型的数据库服务器的请求。

先决条件:

如果想编写Ruby脚本来访问MySQL数据库,那么需要安装Ruby的MySQL模块。

此模块作为一个DBD如上所述,可以直接从网上下载 http://www.tmtm.org/en/mysql/ruby/

获取并安装Ruby/DBI:

可以下载并安装Ruby DBI模块从以下位置:

http://rubyforge.org/projects/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 server
     dbh = DBI.connect("DBI:Mysql:TESTDB:localhost","testuser","test123")# get server version string and display it
     row = dbh.select_one("SELECT VERSION()")
     puts "Server version: "+ row[0]rescue DBI::DatabaseError=> e
     puts "An error occurred"
     puts "Error code:    #{e.err}"
     puts "Error message: #{e.errstr}"ensure# disconnect from server
     dbh.disconnect if dbh
end

当运行这个脚本,它在我的Linux机器产生以下结果。

Server version:5.0.45

如果建立一个连接的数据源,然后继续使用,否则 dbh 设置为NILL值,e.err的和e::errstr返回错误代码和错误字符串返回,并保存到一个数据库句柄 dbh。最后出来之前,确保关闭数据库连接,并释放资源。

posted @ 2013-08-23 22:37  Jaerall  阅读(403)  评论(0)    收藏  举报