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

查看( 709 ) / 评论( 6 )
每日随笔
  • 每日随笔:
ruby连接数据库 oracle的方法之二:DBD
y._R9|J.]@zPNz h0U051Testing软件测试网zY;Q;Qc
DBD::OCI8 is a database driver of Ruby/DBI.
q{+ve7m Q;D Qv*mc0
W2zQl zEd0如果你是是有那个PL/SQL程序的话,就可以顺利的执行以下的步骤了,因为DBD::OCI8会使用tnsname中的配置 通过PL/SQL访问数据库51Testing软件测试网 W u8{#B|k']8W

&W3ra6dWC0我们来安装DBD::OCI8
yOP h2bT051Testing软件测试网0g\7@4VH
我使用的版本是:dbi-0.4.3
hx.W&I'D L-o)U051Testing软件测试网0w.nO-t5r
使用的安装文件是:dbi-0.4.3.gem
2y&NC$R$| IB JX0
4d&j2~s UlP'C2c$AaN0版本地址连接如下:http://rubyforge.org/projects/ruby-dbi/   或http://rubyforge.org/frs/?group_id=234&release_id=38997
R.T:{)a"c8X7o$mz051Testing软件测试网m+v![l#BtN C
下载到:***\ruby\lib\ruby\gems\1.8\gems  51Testing软件测试网C7X8L*RmDA;H u

3f:n$KE9sC`0执行命令如下:gen install dbi-0.4.3.gem51Testing软件测试网7T*m*d#X9T"`'F#T
51Testing软件测试网-[1_qrN@:R!v^
其他格式的安装文件,具体方法就不介绍了。。。。51Testing软件测试网(_&`U/l]R&}%\

0`+Wp@#f$ruys0安装成功后,验证是否连接通过,方法如下:51Testing软件测试网-Ly,] [;zh
51Testing软件测试网3I~Y!~|(lrs7GZb
#使用的时候一定要加载dbi
-]2W_:AvB0require 'dbi'51Testing软件测试网7Y2YRz/n0yB1`

Q z;\J0fr@_l0#创建DBI连接51Testing软件测试网2B,A1TV8w4Ub4b
dbh = DBI.connect('DBI:OCI8:dbname', 'username', 'password')
u!B ^Et0
,s5v8t2JV*PU7ov i0使用相关函数介绍:
(^$zD+n E01)connect('DBI:OCI8:dbname', 'username', 'password')
R&{ B)C"E8{ A0connect 是DBI的连接函数
D@$t+Y.gd0DBI:OCI8:---------是固定写好的
Y*N u(R,}7r0dbname   ------- 数据库名称 即:tnsnames
xJJ)}}rJ~0   如果连接是本地数据库的话:可以省略 例子如下:51Testing软件测试网kk'u8?+m7X5oyf
   connect to a local server.51Testing软件测试网OL l(lpD0y
   require 'dbi'
(z*v*m5\x!h x0   dbh = DBI.connect('DBI:OCI8:', 'username', 'password')
51Testing软件测试网%v o t%oif

]|,eh3E;O,q]1U \0username ------- 用户名51Testing软件测试网)c/g*n!S6KSWfX p
password ------- 密码
`x.f+fV+B`8P02)prepare(sql)   执行数据库操作函数
%Z9w@s1N~a2yK0
Q*HfS1|,[L M;RJ:mH0例子如下:51Testing软件测试网0`pmtz2N
require "dbi"51Testing软件测试网B*tL-Lw
51Testing软件测试网0ULz,uG)e2D3E)P8S-bu4x
db = DBI.connect("dbi:OCI8:mydb", "user", "password")51Testing软件测试网yacKd
query = "select * from people"51Testing软件测试网9h:{'D&k+w7G
51Testing软件测试网#@GS)P$NKF$ny
stmt = db.prepare(query)51Testing软件测试网B3f~3F{(kL gLS
stmt.execute51Testing软件测试网 d"_AdK.e0b W7\Ca+W

'tY|(S@M0while row = stmt.fetch do
N"t3jC)UT1cj ] Wrpqb0puts row.join(",")51Testing软件测试网 qr.P8W'~
end51Testing软件测试网q5S N/Ks
51Testing软件测试网@WIg;EW/J'D Y4k
stmt.finish51Testing软件测试网C'_|I:wFX
db.disconnect51Testing软件测试网2r0X0r0@DI:^[ d hO

O|4w#Wl2h?0如果你没有配置PL/SQL 没有本地的tnsname 后者不想使用本地的TNSname 就可以直自己去定义个函数:
s%E\8tw ^5\0def open_connection51Testing软件测试网!V MBF5M\;K
    tnsnames = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = somehost.somedomain.com)(PORT = 1521)) (CONNECT_DATA = (SID = some_sid)))'
O)D#Ju}y"N+n\0    connection = connect('DBI:OCI8:tnsnames', 'username', 'password')
6E0te4@I]xH6G0end
e2q9N.ck}w y]0至于open_connection函数后面是否需要配置参数,看项目需求了。如果你的项目数据库基本就是那么一个的话 就可以直接在里面定义了  51Testing软件测试网5H4B t1^"\;gOfa.W

M3i-u[#E0呵呵当然也可以传参数
e6b!n&d+M!k]051Testing软件测试网@;db2yG:pt2mH
数据库访问地址变化多的话 那就是要传参数了。。。51Testing软件测试网u8ehCf

9XC BlT.^Tf0DBI函数集 请参照ruby函数系列之一:DBI函数集
)MSx"_7Qaa'aaP0
rtz?5p+\$yj0[本帖最后由 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
路过看看的啊,给楼主顶了的啊……软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具        [}$a&m2H X
http://a10.fyis.infowww.51testing.coml4Q~l%d;sT:Q
http://a11.fyis.info)lPX2EjA
http://a12.fyis.info51Testing软件测试网c:i$l1]RA$vY
http://a13.fyis.infowww.51testing.com+vb
k{;l%H

http://a14.fyis.info
pdN6?;Jy:y Z中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务http://a15.fyis.infod8VcTh@
rjc

http://a16.fyis.info
$f"h!OE0G*zOwww.51testing.comhttp://a17.fyis.info
%c _7e"Ca.l N"mX51Testing软件测试网http://a18.fyis.info软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具@
\g8Kbu/gOS

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