Ruby 教程 之 Ruby 数据库访问 - DBI 教程 16
Ruby 数据库访问 - DBI 教程
本章节将向您讲解如何使用 Ruby 访问数据库。Ruby DBI 模块为 Ruby 脚本提供了类似于 Perl DBI 模块的独立于数据库的接口。
DBI 即 Database independent interface,代表了 Ruby 独立于数据库的接口。DBI 在 Ruby 代码与底层数据库之间提供了一个抽象层,允许您简单地实现数据库切换。它定义了一系列方法、变量和规范,提供了一个独立于数据库的一致的数据库接口。
方法的代码块
有一些创建句柄的方法。这些方法通过代码块调用。使用带有方法的代码块的优点是,它们为代码块提供了句柄作为参数,当块终止时会自动清除句柄。下面是一些实例,有助于理解这个概念。
DBI.connect :该方法生成一个数据库句柄,建议在块的末尾调用 disconnect 来断开数据库。
dbh.prepare :该方法生成一个语句句柄,建议在块的末尾调用 finish。在块内,您必须调用 execute 方法来执行语句。
dbh.execute :该方法与 dbh.prepare 类似,但是 dbh.execute 不需要在块内调用 execute 方法。语句句柄会自动执行。
实例 1
DBI.connect 可带有一个代码块,向它传递数据库句柄,且会在块的末尾自动断开句柄。
dbh = DBI.connect("DBI:Mysql:TESTDB:localhost",
"testuser", "test123") do |dbh|
实例 2
dbh.prepare 可带有一个代码块,向它传递语句句柄,且会在块的末尾自动调用 finish。
dbh.prepare("SHOW DATABASES") do |sth|
sth.execute
puts "Databases: " + sth.fetch_all.join(", ")
end
实例 3
dbh.execute 可带有一个代码块,向它传递语句句柄,且会在块的末尾自动调用 finish。
dbh.execute("SHOW DATABASES") do |sth|
puts "Databases: " + sth.fetch_all.join(", ")
end
DBI transaction 方法也可带有一个代码块