Ruby 教程 之 Ruby 数据库访问 - DBI 教程 17
Ruby 数据库访问 - DBI 教程
本章节将向您讲解如何使用 Ruby 访问数据库。Ruby DBI 模块为 Ruby 脚本提供了类似于 Perl DBI 模块的独立于数据库的接口。
DBI 即 Database independent interface,代表了 Ruby 独立于数据库的接口。DBI 在 Ruby 代码与底层数据库之间提供了一个抽象层,允许您简单地实现数据库切换。它定义了一系列方法、变量和规范,提供了一个独立于数据库的一致的数据库接口。
特定驱动程序的函数和属性
DBI 让数据库驱动程序提供了额外的特定数据库的函数,这些函数可被用户通过任何 Handle 对象的 func 方法进行调用。
使用 []= or [] 方法可以设置或获取特定驱动程序的属性。
DBD::Mysql 实现了下列特定驱动程序的函数:
序号 函数 & 描述
1 dbh.func(:createdb, db_name)
创建一个新的数据库。
2 dbh.func(:dropdb, db_name)
删除一个数据库。
3 dbh.func(:reload)
执行重新加载操作。
4 dbh.func(:shutdown)
关闭服务器。
5 dbh.func(:insert_id) => Fixnum
返回该连接的最近 AUTO_INCREMENT 值。
6 dbh.func(:client_info) => String
根据版本返回 MySQL 客户端信息。
7 dbh.func(:client_version) => Fixnum
根据版本返回客户端信息。这与 :client_info 类似,但是它会返回一个 fixnum,而不是返回字符串。
8 dbh.func(:host_info) => String
返回主机信息。
9 dbh.func(:proto_info) => Fixnum
返回用于通信的协议。
10 dbh.func(:server_info) => String
根据版本返回 MySQL 服务器端信息。
11 dbh.func(:stat) => Stringb>
返回数据库的当前状态。
12 dbh.func(:thread_id) => Fixnum
返回当前线程的 ID。
!/usr/bin/ruby
require "dbi"
begin
连接到 MySQL 服务器
dbh = DBI.connect("DBI:Mysql:TESTDB:localhost",
"testuser", "test123")
puts dbh.func(:client_info)
puts dbh.func(:client_version)
puts dbh.func(:host_info)
puts dbh.func(:proto_info)
puts dbh.func(:server_info)
puts dbh.func(:thread_id)
puts dbh.func(:stat)
rescue DBI::DatabaseError => e
puts "An error occurred"
puts "Error code: #{e.err}"
puts "Error message: #{e.errstr}"
ensure
dbh.disconnect if dbh
end
这将产生以下结果:
5.0.45
50045
Localhost via UNIX socket
10
5.0.45
150621
Uptime: 384981 Threads: 1 Questions: 1101078 Slow queries: 4 \
Opens: 324 Flush tables: 1 Open tables: 64 \
Queries per second avg: 2.860