不要追求绝对的公平,红尘之中没有公平而言,人活一世,难得糊涂。
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;QcDBD::OCI8 is a database driver of Ruby/DBI.
q{+ve7m Q;DQv*mc0W2zQlzEd0如果你是是有那个PL/SQL程序的话,就可以顺利的执行以下的步骤了,因为DBD::OCI8会使用tnsname中的配置 通过PL/SQL访问数据库
51Testing软件测试网Wu8{#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.gem2y&NC$R$|
IB JX04d&j2~s
UlP'C2c$AaN0版本地址连接如下:
http://rubyforge.org/projects/ruby-dbi/ 或
http://rubyforge.org/frs/?group_id=234&release_id=38997R.T:{)a"c8X7o$mz051Testing软件测试网m+v![l#BtN
C下载到:***\ruby\lib\ruby\gems\1.8\gems
51Testing软件测试网C7X8L*RmDA;H u3f:n$K E9sC`0执行命令如下:gen install dbi-0.4.3.gem
51Testing软件测试网7T*m*d#X9T"`'F#T51Testing软件测试网-[1_qrN@:R!v^其他格式的安装文件,具体方法就不介绍了。。。。
51Testing软件测试网(_&`U/l]R&}%\0`+W p@#f$ruys0安装成功后,验证是否连接通过,方法如下:
51Testing软件测试网-Ly,] [;zh51Testing软件测试网3I~Y!~|(lrs7GZb#使用的时候一定要加载dbi
-]2W_:AvB0require 'dbi'
51Testing软件测试网7Y2YRz/n0y B1`Q
z;\J0fr@_l0#创建DBI连接
51Testing软件测试网2B,A1TV8w4Ub4bdbh = 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?+m7X5oy f
connect to a local server.51Testing软件测试网OLl(lpD0y
require 'dbi'
(z*v*m5\x!h x0 dbh = DBI.connect('DBI:OCI8:', 'username', 'password')51Testing软件测试网%vo
t%oif]|,eh3E;O,q]1U \0username ------- 用户名
51Testing软件测试网)c/g*n!S6KSWfX
ppassword ------- 密码
`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.e0bW7\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'DY4k
stmt.finish51Testing软件测试网C'_|I:wFX
db.disconnect51Testing软件测试网2r0X0r0@DI:^[
dhO
O|4w#Wl2h?0如果你没有配置PL/SQL 没有本地的tnsname 后者不想使用本地的TNSname 就可以直自己去定义个函数:
s%E\8tw ^5\0def open_connection
51Testing软件测试网!VMBF5M\;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.WM3i-u[#E0呵呵当然也可以传参数
e6b!n&d+M!k]051Testing软件测试网@;db2yG:pt2mH数据库访问地址变化多的话 那就是要传参数了。。。
51Testing软件测试网u8ehCf9XC
BlT.^Tf0DBI函数集 请参照ruby函数系列之一:DBI函数集)MSx"_7Qaa'aaP0rtz?5p+\$yj0[
本帖最后由 Spark.lee 于 2009-9-19 11:32 编辑]
论坛模式
推荐
收藏
分享给好友
管理
TAG: