|
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 编辑 ] |
|