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

ruby连接数据库 oracle的方法之一:OCI8

上一篇 / 下一篇  2009-09-18 17:51:35 / 个人分类:ruby_watir

查看( 1355 ) / 评论( 4 )
每日随笔
  • 每日随笔:
ruby-oci8 是 Ruby 使用 Oracle 的 OCI8 接口连接 Oracle 数据库的接口。51Testing软件测试网/k1WC2R*\ X8G

*Ad:QnEY0如果你是是有那个PL/SQL程序的话,就可以顺利的执行以下的步骤了,因为oci8会使用tnsname中的配置 通过PL/SQL访问数据库
5Bv[N$g`w f&p051Testing软件测试网4N6Y4`"c[W:SP
a 使用该命令直接安装:gem install ruby-oci851Testing软件测试网h3M?:VLa jm7\:nyXB
b 下载文件:http://rubyforge.org/projects/ruby-oci8/  51Testing软件测试网a1~"S0Y.q9u
  B1.下载文件: ruby-oci8-1.0.6-mswin32.rb
9LsHeL7{kL0     下载到本地后通过命令 执行rb文件:ruby ruby-oci8-1.0.6-mswin32.rb
6c?)F7pr!O9pIW0  B2. 下载文件:ruby-oci8-1.0.6-x86-mswin32-60.gem51Testing软件测试网4lg oe.m
   ............................... N多安装方式
h2m8S q+J@#T0最新文件如下:  51Testing软件测试网"r9S'lj$_+Vm/J
   ruby-oci8-1.0.6-mswin.rb        56 KB        1,989        i386        Other
q-B X4[ e:i0   ruby-oci8-1.0.6-x86-mswin32-60.gem        112 KB        780        i386        .gem (RubyGem)51Testing软件测试网Fj"ZTaEb5i$U)A
    ruby-oci8-1.0.6.gem        116 KB        798        Any        .gem (RubyGem)
_!]ST ee0    ruby-oci8-1.0.6.tar.gz
5X6H sO8m0安装成功后,验证是否连接通过,方法如下:51Testing软件测试网"G G F0J"IP
#使用的时候一定要加载oci8
{#t-m5d3r ]0require 'oci8'
N0k4p ^lF5i!F0#创建连接51Testing软件测试网`'F7~s*J"~)]!KZ
conn = OCI8.new("用户名", "密码","oracle服务器名称")
Z3H"[U3wqD4s\0
-L*gRJ^il6v0a =[]51Testing软件测试网_ c"NbZ-HS+S`S
#执行查询操作
9K5A L2g^|v$he0cursor = conn.exec('select * from 表名') { |r| a<<r; puts r.join('')}51Testing软件测试网.qWCJU n6C,k

'R}"L9s$I1[0puts r.join('')  主要是输出样式的问题 可以使用  puts r.to_s51Testing软件测试网mO y.^%D \yv7z
51Testing软件测试网h2Z5E5oQA;`
函数用法如下:51Testing软件测试网AVt;yH)y}
1)OCI8.new51Testing软件测试网w6S i,CL
OCI8.new(userid, password, dbname = nil, privilege = nil)
H"c$n!n.lx2|0connect to Oracle by userid and password. dbname is the connect string of Net8.51Testing软件测试网Q G(pd"_#I_+qc|
If you need DBA privilege, please set privilege as :SYSDBA or :SYSOPER.51Testing软件测试网W/Dp`T%?~S G?*`
If the Oracle client is 10g or later, you can use "//hostname_or_ip:port_no/oracle_sid" as dbname.51Testing软件测试网#_)G'F"X BO g&}3M

'{4@ dE:f"d] T#} l0# sqlplus scott/tiger
G M Iw FC0conn = OCI8.new("scott", "tiger")
6`p}3D&^9zXw2@k0
`4` z!P O9QK0# sqlplus scott/tiger@orcl.world
)G,t_4G%sfv0conn = OCI8.new("scott", "tiger", "orcl.world")
fq;B2s'`z0qZ0
p G0X*{-Do @&e%o:b0# sqlplus 'sys/change_on_install as sysdba'
r u%e2EXI%SD0conn = OCI8.new("sys", "change_on_install", nil, :SYSDBA)
C-MIg*_ K0
2k5j"W9J \r0# sqlplus scott/tiger@//oracle_db.example.com/XE
,O1`l3n*T0conn = OCI8.new("scott", "tiger", "//oracle_db.example.com/XE")51Testing软件测试网:S:j7^ Y"@0|\

F)^Im{ g02)exec51Testing软件测试网$R(\&y3EKd \?2_6^
51Testing软件测试网Y0cWe4Az
exec(sql, *bindvars)51Testing软件测试网.w2] fy$C'j6^|5Q

em%BTP5~VZ7]0如果你没有配置PL/SQL 没有本地的tnsname 后者不想使用本地的TNSname 就可以直自己去定义个函数:
C8M4OF(~0dIT051Testing软件测试网y3q;O f&@:]OkL
def open_connection
5Jn3U-V.m0    tnsnames = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = somehost.somedomain.com)(PORT = 1521)) (CONNECT_DATA = (SID = some_sid)))'51Testing软件测试网1Cc4]6dQ6QT ~
    connection = OCI8.new('your_username', 'your_password', tnsnames)
:y'qD'E3EM o0end
.Xtx c%D$s!D*ld051Testing软件测试网%Ep@ndT3i
至于open_connection函数后面是否需要配置参数,看项目需求了。如果你的项目数据库基本就是那么一个的话 就可以直接在里面定义了  51Testing软件测试网9_V*Iv/yR
51Testing软件测试网"vuk8G+_)K
呵呵当然也可以传参数
'd2AF_I|*V_0
o#}U|`_D0数据库访问地址变化多的话 那就是要传参数了。。。

3z8{ X"J2y*@P0
X7D;?s*u'y4lo(Bh0

TAG:

yetties2005的个人空间 yetties2005 发布于2010-01-05 10:17:04
有机会按照你的方法试试~
小不点蜗牛的个人空间 小不点蜗牛 发布于2010-03-01 23:32:06
学习中
e1king发布于2010-05-12 12:00:12
好强大的帖子
sa748发布于2010-08-24 11:02:14
很好的帖子..支持
我来说两句

(可选)

Open Toolbar