不要追求绝对的公平,红尘之中没有公平而言,人活一世,难得糊涂。                                           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

查看( 567 ) / 评论( 6 )
每日随笔
  • 每日随笔:
ruby连接数据库 oracle的方法之二:DBD
k:Sa zy+F7tI0
W+UB#F)I0DBD::OCI8 is a database driver of Ruby/DBI.51Testing软件测试网*R!bfkS{a5U7p

1y9B6Y Lm A2Sd:dA0如果你是是有那个PL/SQL程序的话,就可以顺利的执行以下的步骤了,因为DBD::OCI8会使用tnsname中的配置 通过PL/SQL访问数据库
}1U#| Q&s0
uC gaKD*F"MA0我们来安装DBD::OCI8
,j P2c$N&qh5S051Testing软件测试网0s Q%JXf#g&i
我使用的版本是:dbi-0.4.351Testing软件测试网X@r9]-^Ke'Yy
51Testing软件测试网$}oJ i*hl
使用的安装文件是:dbi-0.4.3.gem
O,Z1t"l#gk)d051Testing软件测试网f+\D!? \-GPR
版本地址连接如下:http://rubyforge.org/projects/ruby-dbi/   或http://rubyforge.org/frs/?group_id=234&release_id=38997
`.ASXh ye1@051Testing软件测试网&X,V\:L\w
下载到:***\ruby\lib\ruby\gems\1.8\gems  51Testing软件测试网+m$] I*^D(?#_s

V K l)I0W HJ @:EmU0执行命令如下:gen install dbi-0.4.3.gem51Testing软件测试网(rw1nU i
51Testing软件测试网 iz1_)h$E,ta]
其他格式的安装文件,具体方法就不介绍了。。。。51Testing软件测试网Q8K^ g|h@K~4H&J
51Testing软件测试网7aDe(L,yjP
安装成功后,验证是否连接通过,方法如下:51Testing软件测试网UemC6y L m
51Testing软件测试网w `_3@z(v sQ8HY_5T
#使用的时候一定要加载dbi51Testing软件测试网r9YX.]\/V!|oK
require 'dbi'
9M iw*p.PU uw#r0
R)A@,e&~5e0#创建DBI连接51Testing软件测试网qPG8b(E{
dbh = DBI.connect('DBI:OCI8:dbname', 'username', 'password')
H~Lr8O2M051Testing软件测试网*B2gU1Q5Sv
使用相关函数介绍:
)h0vm%I4W/t*KZy01)connect('DBI:OCI8:dbname', 'username', 'password')51Testing软件测试网6c]sGl"XF]
connect 是DBI的连接函数51Testing软件测试网W1NKjSYL~SM5R
DBI:OCI8:---------是固定写好的
9D@ u`|-KHj0dbname   ------- 数据库名称 即:tnsnames
U mQ u#oZ:gj&@Y$T0   如果连接是本地数据库的话:可以省略 例子如下:
GwE"[W0   connect to a local server.
?3YO8uX'{{al0   require 'dbi'51Testing软件测试网Bzx$eyQn$~'Ec
   dbh = DBI.connect('DBI:OCI8:', 'username', 'password')

4r{]&e!z o0
\(w(DQGUP%X0username ------- 用户名
1jC9Z4Aa-B0password ------- 密码51Testing软件测试网(Y?Ex,u._Z U[,kprK5q
2)prepare(sql)   执行数据库操作函数
0bv;S GrG k&X051Testing软件测试网ntHE9~L@Jt
例子如下:
;K}B.W2t7f0require "dbi"51Testing软件测试网EROxb9ZB

!qa~ v~2q1lO0A0db = DBI.connect("dbi:OCI8:mydb", "user", "password")
*K1{(mp(g1e0query = "select * from people"51Testing软件测试网$Mu0f,a:Xar

vV G0Q/tTi0stmt = db.prepare(query)51Testing软件测试网:^wY$Bc
stmt.execute51Testing软件测试网3b9?9f3LF)sD

v4pDV)dC(q"h0while row = stmt.fetch do
L$sd9hp ~p0puts row.join(",")
2K2h+FHd0end51Testing软件测试网 O}x%z5k

Z1K8^7Gsu0stmt.finish51Testing软件测试网 NfGVA
db.disconnect
z$RQfj$nGX3d0

(E#_U] L:Hgd0如果你没有配置PL/SQL 没有本地的tnsname 后者不想使用本地的TNSname 就可以直自己去定义个函数:51Testing软件测试网!z o-CFr3} nbE
def open_connection51Testing软件测试网6Z"l:FIYy
    tnsnames = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = somehost.somedomain.com)(PORT = 1521)) (CONNECT_DATA = (SID = some_sid)))'51Testing软件测试网2_ @ azw5BIg|l ],Y6q
    connection = connect('DBI:OCI8:tnsnames', 'username', 'password')51Testing软件测试网3tu.[5DM!rBK7\3n
end51Testing软件测试网 [/b/m[*tN o'E7x'N
至于open_connection函数后面是否需要配置参数,看项目需求了。如果你的项目数据库基本就是那么一个的话 就可以直接在里面定义了  51Testing软件测试网)`N)x5q9k1tR6^ln

!e2b7utnk0呵呵当然也可以传参数
9{G0K1b7c1i^1se H0
o1D;Z^{M0数据库访问地址变化多的话 那就是要传参数了。。。51Testing软件测试网@}@,]2s:A

YG}7`F!zN"N*c)})r2}0DBI函数集 请参照ruby函数系列之一:DBI函数集
&`$Y"[(J(t do0
:nc]Wcb*{_0[本帖最后由 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
路过看看的啊,给楼主顶了的啊……
I.HhV5GG&I+Thttp://a10.fyis.info
4P xN4Tc_wK软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具http://a11.fyis.info6g"l+x.og2c/d
http://a12.fyis.infowww.51testing.com0P1M'b4}"iU};Kt
http://a13.fyis.info
)T2L4m |S.q{2O软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具http://a14.fyis.info软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具vC/eKkDE}&a
http://a15.fyis.info
,t3V;_(U-uYnp]软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具http://a16.fyis.info
|/j MN1?pWW|中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务http://a17.fyis.info中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务V;H)A#z8H%v        F
http://a18.fyis.infowww.51testing.compF1y9VD1i/L%h
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