Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104668691
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-05-22 17:37:57

   来源:

执行了这两个 Ruby 脚本之后,您就具有了一个名为 STATES 的数据库表,其中填充了几个州。现在,假设您在一些州的首府上犯了一些典型错误,甚至弄混了一个州的缩写(用 MA 代表 Maine,实际上 MA 代表 Massachusetts)。

清单 3 显示了用以修复这些问题的简单 UPDATE 脚本。清单 3 用占位符更新州首府并直接更新 Maine 的错误缩写,而不使用任何占位符或任何类型的语句准备。

清单3:updateStatesTable.rb

require 'dbi'

dbh = DBI.connect('DBI:OCI8:ORCL', 'hr', 'hr')

sqlCapitalsUpdate = "UPDATE states SET capital = ? WHERE id = ?"

dbh.do(sqlCapitalsUpdate, "Montgomery", "AL")

dbh.do(sqlCapitalsUpdate, "Harrisburg", "PA")

dbh.do(sqlCapitalsUpdate, "Olympia", "WA")

dbh.do("UPDATE states SET id = 'ME' WHERE name = 'Maine'")

dbh.commit

dbh.disconnect

正如您希望的那样,DELETE 的执行方式与其同等的 DML 语句 INSERT 和 UPDATE 的执行方式非常类似。因此,您现在将转到一条 SELECT 语句,因为该语句添加了一个新技巧:数据库查询的结果集。

清单 4 演示如何在我们新填充的 STATES 表上执行一个简单查询。内置的 p 函数打印出返回的行,如图 5 所示。您可能已经使用内置的 puts 方法或 pp(“优化打印程序”)库来显示查询结果。清单 4 显示使用 # 指示有关打印查询结果的这两种方式的 Ruby 内联注释。

清单4:queryStatesTable.rb

require 'dbi'

dbh = DBI.connect('DBI:OCI8:ORCL', 'hr', 'hr')

rs = dbh.prepare('SELECT * FROM states')

rs.execute

while rsRow = rs.fetch do

p rsRow

#Alternative output: puts rsRow

#Alternative output: pp rsRow

end

rs.finish

dbh.disconnect

图5:查询结果

Ruby DBI 提供了更好的输出格式。清单 5 和 6 显示使用 DBI 分别以表格和 XML 格式输出相同的查询结果。清单 5 和 6 中的代码不仅显示了 DBI::Utils 输出格式功能的用法,还显示了与清单 4 略微不同的获取和操作结果集的方法。

清单5:queryStatesTableFormatter.rb

require 'dbi'

dbh = DBI.connect('DBI:OCI8:ORCL', 'hr', 'hr')

rs = dbh.execute('SELECT * FROM states')

rows = rs.fetch_all

column_names = rs.column_names

rs.finish

DBI::Utils::TableFormatter.ascii(column_names, rows)

dbh.disconnect

Listing 6: queryStatesTableXML.rb

require 'dbi'

dbh = DBI.connect('DBI:OCI8:ORCL', 'hr', 'hr')

rs = dbh.execute('SELECT * FROM states')

states_rows = rs.fetch_all

rs.finish

DBI::Utils::XMLFormatter.table(states_rows)

dbh.disconnect

图 6 和 7 分别显示了这些脚本产生的表格式输出和 XML 输出。

图6:查询结果的表格式输出
图7:XML 格式的查询结果


 

阅读(803) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~