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 Coderequire 'dbi'
3. 连接数据库
3.1 MySQL连接示例
rubyCopy Coderequire '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 Codedbh = DBI.connect(dsn, user, password, opt)
其中,dsn表示连接字符串,user表示用户名,password表示密码,opt是一些附加参数。
4.1.2 disconnect 方法
断开与数据库的连接。
rubyCopy Codedbh.disconnect
4.2 StatementHandle 类
StatementHandle对象是DBI中最重要的对象之一,用于执行SQL语句,包括查询、插入、修改、删除等操作。
4.2.1 prepare 方法
准备执行SQL语句。
rubyCopy Codesth = dbh.prepare(sql)
其中,sql表示要执行的SQL语句。
4.2.2 execute 方法
执行SQL语句。
rubyCopy Codesth.execute(params)
其中,params是一个存放参数值的数组。
4.2.3 fetch 方法
获取查询结果集中的一行数据。
rubyCopy Coderow = sth.fetch
4.2.4 finish 方法
关闭查询并释放资源。
rubyCopy Codesth.finish
5. 总结
DBI是一个非常强大的数据库访问模块,它可以使你在Ruby程序中使用不同的关系型数据库,并使用相同的API进行操作。通过本文的学习,你了解了如何安装和配置DBI模块,并编写了MySQL连接示例程序。同时,你还了解了DBI类和StatementHandle类的一些常用方法,可以帮助你更好地开发Ruby程序。