不要追求绝对的公平,红尘之中没有公平而言,人活一世,难得糊涂。                                           it is no use doing what you like, you have got to like what you do.

ruby连接数据库 oracle的方法之二:DBD

上一篇 / 下一篇  2009-09-19 11:32:50 / 个人分类:ruby_watir

查看( 476 ) / 评论( 6 )
每日随笔
  • 每日随笔:
ruby连接数据库 oracle的方法之二:DBD
g]!fAo9CA{051Testing软件测试网k+fMZ6H|k
DBD::OCI8 is a database driver of Ruby/DBI.51Testing软件测试网,u5hy2j:RO-D

*}?r s$J0m-q9c0如果你是是有那个PL/SQL程序的话,就可以顺利的执行以下的步骤了,因为DBD::OCI8会使用tnsname中的配置 通过PL/SQL访问数据库51Testing软件测试网"f["EyW*Y9]"\X%JK_
51Testing软件测试网1FzF @*?2ao
我们来安装DBD::OCI851Testing软件测试网x({n+C4rr%Ju p

~ O:j)m1}ubg0OE0我使用的版本是:dbi-0.4.351Testing软件测试网6g O[4Y vo@@_b

{;s;~)]({%C`/d n in0使用的安装文件是:dbi-0.4.3.gem51Testing软件测试网^(it%h~#t

?Oh|4{^0版本地址连接如下:http://rubyforge.org/projects/ruby-dbi/   或http://rubyforge.org/frs/?group_id=234&release_id=3899751Testing软件测试网Y[@L,[-d%i7A3V0[ | o

)F&r4c*^Z\&K0下载到:***\ruby\lib\ruby\gems\1.8\gems  
l8@.hP)t051Testing软件测试网V_,^*X1yz\
执行命令如下:gen install dbi-0.4.3.gem
'w)t|6hT9RwF r051Testing软件测试网^q#j{8D}V
其他格式的安装文件,具体方法就不介绍了。。。。
dm7u.C;F^+ov051Testing软件测试网q#oq)Z&}"a#f
安装成功后,验证是否连接通过,方法如下:
%X6e5l9HZ0
~Q? B9ym0#使用的时候一定要加载dbi
0p;C)n!q$m)U@woG0require 'dbi'51Testing软件测试网l^2_5pi/i,l
51Testing软件测试网$Tyh,^ kYQq5K
#创建DBI连接
;Eu1b&x7^,c%yr [ C0dbh = DBI.connect('DBI:OCI8:dbname', 'username', 'password')
\,W/O TU/gp!c1bE}*F051Testing软件测试网R8U d;S|AHo$G
使用相关函数介绍:51Testing软件测试网\x5x }1U [4p|
1)connect('DBI:OCI8:dbname', 'username', 'password')51Testing软件测试网`Wq(`.a0K d0K2g
connect 是DBI的连接函数51Testing软件测试网Ror^'D/d F
DBI:OCI8:---------是固定写好的51Testing软件测试网HJ6U,@*J+L
dbname   ------- 数据库名称 即:tnsnames51Testing软件测试网wN&_2\B Em
   如果连接是本地数据库的话:可以省略 例子如下:51Testing软件测试网 iP;J h9Oq&m W
   connect to a local server.51Testing软件测试网7t zYX],b2Af
   require 'dbi'51Testing软件测试网/^(A3FJ+@#f
   dbh = DBI.connect('DBI:OCI8:', 'username', 'password')

k)|;Z#Tql9o0
f%i:OHV*RO0username ------- 用户名51Testing软件测试网]A~)[0LQE
password ------- 密码51Testing软件测试网s:W??]"_)T
2)prepare(sql)   执行数据库操作函数
3X l'j/c`#qB-M051Testing软件测试网.\'p(`(YrP%}m
例子如下:51Testing软件测试网2J8Ra8j(rLe]
require "dbi"51Testing软件测试网8? c/L |1|SXqC3KT

gM^tp0db = DBI.connect("dbi:OCI8:mydb", "user", "password")
o!B7xZJMk0query = "select * from people"
/v J @*K~$_ FN1`0
4u;ALsiE8{ MN%G0stmt = db.prepare(query)
&t$lW R&vZXg0stmt.execute51Testing软件测试网3i6u+h hDJ6Cw#J
51Testing软件测试网'^?9i TQXQ} T
while row = stmt.fetch do
'g]'S2_1r*a}J7j(s0puts row.join(",")
_#`SwB5D4e0end
4s#U Y rt}9[!Y051Testing软件测试网RS a7~"?\6c/n
stmt.finish51Testing软件测试网$D"v3W$Y#b@ sUe*W
db.disconnect51Testing软件测试网/Cd] p9ql

]NG6T.H0YIr"{J0如果你没有配置PL/SQL 没有本地的tnsname 后者不想使用本地的TNSname 就可以直自己去定义个函数:
_OU1EPT~ n0def open_connection
XqID\+_uh4J,e0    tnsnames = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = somehost.somedomain.com)(PORT = 1521)) (CONNECT_DATA = (SID = some_sid)))'51Testing软件测试网,k:]\%u5]
    connection = connect('DBI:OCI8:tnsnames', 'username', 'password')
'NQvh8vv%y0end
9\ tAa'PF0至于open_connection函数后面是否需要配置参数,看项目需求了。如果你的项目数据库基本就是那么一个的话 就可以直接在里面定义了  
Zb!C`E0k051Testing软件测试网RG;Yq2o`!WE
呵呵当然也可以传参数51Testing软件测试网5j_`FSVSQ

L a%qV0o2q0数据库访问地址变化多的话 那就是要传参数了。。。
:ax? VMcv8D%ht051Testing软件测试网1RZLcoO s'j
DBI函数集 请参照ruby函数系列之一:DBI函数集
kN)B7Z6rl1W051Testing软件测试网8mn L q9Y XJ`!H$d.X
[本帖最后由 Spark.lee 于 2009-9-19 11:32 编辑]

TAG:

ahtest发布于2010-03-12 13:57:54
正好要用...
e1king发布于2010-05-12 12:05:58
这个是不是也基于oci8来实现的啊?
xiaosan08发布于2011-02-19 09:42:43
路过看看的啊,给楼主顶了的啊……www.51testing.comjll8KM,Wk
ZK

http://a10.fyis.info
3~9i(w3X;A*Gg-MHo51Testing软件测试网http://a11.fyis.infowww.51testing.comj/W;avY}q
http://a12.fyis.info软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具,f YrG
?f
L

http://a13.fyis.info51Testing软件测试网M
^4f:zo*rg)R\

http://a14.fyis.info
ly
\:f|

http://a15.fyis.info
B
Z3W%L$kuz*F
http://a16.fyis.info51Testing软件测试网ssQ)J8@8nN
http://a17.fyis.info
gf&}~ve`1f
}k0GS软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
http://a18.fyis.info软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具8ce$G~3E S~!uG-i1Q
http://a19.fyis.info
vrqscl发布于2012-05-29 12:44:54
不服不行,楼主就是有水平
oalpha发布于2013-11-09 22:22:03
大家都使用ruby做测试吗?
Miss_love的个人空间 Miss_love 发布于2013-11-19 15:23:15
感谢分享。
我来说两句

(可选)

Open Toolbar