首先用ms access建立一个数据库,用默认值为db1,在其中建立一张表,如tb1。为测试方法,我设了两个段 :
字段名 类型
id 自动编号
name 文本(10)
输入一些测试数据:
ID: 1, Name: 刀
ID: 2, Name: 理
ID: 3, Name: 军
我输入了以上的数据。
下面就建立相应的代码:
代码:
require 'DBI'
conn = DBI.connect('DBI:ODBC:rubydb1','','')
sth = conn.execute("SELECT * FROM tb1"
sth.fetch_hash do |row|
printf "ID: %d, Name: %s\n",
row["id"], row["name"]
end
sth.finish
其中rubydb1是我建立的数据源,后两个参数是放置用户名和密码的,我没设,所以留空。
这样就可以获得你相要的结果了,是不是很简单呢
还可以用DBI::Utils会更有趣,我把代码改了一下,如下 :
代码:
require 'DBI'
conn = DBI.connect('DBI:ODBC:rubydb1','','')
sth = conn.execute("SELECT * FROM tb1"
rows = sth.fetch_all
col_names = sth.column_names
sth.finish
DBI::Utils::TableFormatter.ascii(col_names, rows)
将得到如下的结果:
+----+------+
| id | name |
+----+------+
| 1 | 刀 |
| 2 | 理 |
| 3 | 军 |
+----+------+
这样打印表是不是很快:)
有人会问:能不能再演示一下ADO的用法?
有了ADO,ODBC我觉得比较过时的东西了.我现在在WINDOWS环境下玩,最
常用的就是SQL SERVER,ACCESS.
我也做点贡献,先要下一个DBI的包,解压出ADO.rb,安装到指定目录下,详细见帖子
http://www.railscn.com/viewtopic ... ighlight=SQL+SERVER
下面是实际代码,调通的.其中的连接字符串是从DELPHI程序拷贝过来的,呵呵
require 'DBI'
# conn = DBI.connect('DBI:ODBC:rubydb1','','')
conn = DBI.connect('DBI:ADO:Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\testProj\txl.mdb;Mode=Share Deny Read|Share Deny Write;Persist Security Info=False;')
sth = conn.execute("SELECT * FROM area"
#sth = conn.execute("SELECT * FROM txl"
rows = sth.fetch_all
col_names = sth.column_names
sth.finish
DBI::Utils::TableFormatter.ascii(col_names, rows)
以上是一个ACCESS的,SQL SERVER应该基本是相同的,改一下连接字符串就差不多 了.
RUBY灵活的特点在整理数据库的数据时应该会非常有用.