51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 9761|回复: 6
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-9-19 11:01:48 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
ruby连接数据库 oracle的方法之二:DBD

DBD::OCI8 is a database driver of Ruby/DBI.

如果你是是有那个PL/SQL程序的话,就可以顺利的执行以下的步骤了,因为DBD::OCI8会使用tnsname中的配置 通过PL/SQL访问数据库

我们来安装DBD::OCI8

我使用的版本是:dbi-0.4.3

使用的安装文件是:dbi-0.4.3.gem

版本地址连接如下:http://rubyforge.org/projects/ruby-dbi/   或 http://rubyforge.org/frs/?group_id=234&release_id=38997

下载到:***\ruby\lib\ruby\gems\1.8\gems  

执行命令如下:gen install dbi-0.4.3.gem

其他格式的安装文件,具体方法就不介绍了。。。。

安装成功后,验证是否连接通过,方法如下:

#使用的时候一定要加载dbi
require 'dbi'

#创建DBI连接
dbh = DBI.connect('DBI:OCI8:dbname', 'username', 'password')

使用相关函数介绍:
1)connect('DBI:OCI8:dbname', 'username', 'password')
connect 是DBI的连接函数
DBI:OCI8:---------是固定写好的
dbname   ------- 数据库名称 即:tnsnames
   如果连接是本地数据库的话:可以省略 例子如下:
   connect to a local server.
   require 'dbi'
   dbh = DBI.connect('DBI:OCI8:', 'username', 'password')


username ------- 用户名
password ------- 密码
2)prepare(sql)   执行数据库操作函数

例子如下:
require "dbi"

db = DBI.connect("dbi:OCI8:mydb", "user", "password")
query = "select * from people"

stmt = db.prepare(query)
stmt.execute

while row = stmt.fetch do
puts row.join(",")
end

stmt.finish
db.disconnect

如果你没有配置PL/SQL 没有本地的tnsname 后者不想使用本地的TNSname 就可以直自己去定义个函数:
def open_connection
    tnsnames = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = somehost.somedomain.com)(PORT = 1521)) (CONNECT_DATA = (SID = some_sid)))'
    connection = connect('DBI:OCI8:tnsnames', 'username', 'password')
end
至于open_connection函数后面是否需要配置参数,看项目需求了。如果你的项目数据库基本就是那么一个的话 就可以直接在里面定义了  

呵呵当然也可以传参数

数据库访问地址变化多的话 那就是要传参数了。。。

DBI函数集 请参照ruby函数系列之一:DBI函数集

[ 本帖最后由 Spark.lee 于 2009-9-19 11:32 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-31 08:59
  • 签到天数: 975 天

    连续签到: 1 天

    [LV.10]测试总司令

    7#
    发表于 2013-11-19 15:23:15 | 只看该作者
    感谢分享。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2013-11-9 22:22:03 | 只看该作者
    大家都使用ruby做测试吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2012-5-29 12:44:54 | 只看该作者
    不服不行,楼主就是有水平
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2011-2-19 09:42:43 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2010-5-12 12:05:58 | 只看该作者
    这个是不是也基于oci8来实现的啊?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2#
    发表于 2010-3-12 13:57:54 | 只看该作者
    正好要用...
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-25 09:33 , Processed in 0.082282 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表