程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 通過OCI8接口連接Oracle數據庫

通過OCI8接口連接Oracle數據庫

編輯:Oracle數據庫基礎

連接Oracle數據庫的方法很多,下面為您介紹了一個通過OCI8接口連接Oracle數據庫的方法,希望對您學習連接Oracle數據庫方面能有所幫助。

如果你是是有那個PL/SQL程序的話,就可以順利的執行以下的步驟了,因為oci8會使用tnsname中的配置 通過PL/SQL訪問數據庫

a 使用該命令直接安裝:gem install ruby-oci8
b 下載文件:http://rubyforge.org/projects/ruby-oci8/ 
   B1.下載文件: ruby-oci8-1.0.6-mswin32.rb
    下載到本地後通過命令 執行rb文件:ruby ruby-oci8-1.0.6-mswin32.rb
   B2. 下載文件:ruby-oci8-1.0.6-x86-mswin32-60.gem
............................... N多安裝方式
最新文件如下: 
ruby-oci8-1.0.6-mswin.rb 56 KB 1,989 i386 Other
ruby-oci8-1.0.6-x86-mswin32-60.gem 112 KB 780 i386 .gem (RubyGem)
ruby-oci8-1.0.6.gem 116 KB 798 Any .gem (RubyGem)
ruby-oci8-1.0.6.tar.gz
安裝成功後,驗證是否連接Oracle數據庫通過,方法如下:
#使用的時候一定要加載oci8
require 'oci8'
#創建連接
conn = OCI8.new("用戶名", "密碼","Oracle服務器名稱")

a =[]
#執行查詢操作
cursor = conn.exec('select * from 表名') { |r| a<<r; puts r.join('')}

puts r.join('')   主要是輸出樣式的問題 可以使用   puts r.to_s

函數用法如下:
1)OCI8.new
OCI8.new(userid, passWord, dbname = nil, privilege = nil)
connect to Oracle by userid and passWord. dbname is the connect string of Net8.
If you need DBA privilege, please set privilege as :SYSDBA or :SYSOPER.
If the Oracle clIEnt is 10g or later, you can use "//hostname_or_ip:port_no/Oracle_sid" as dbname.

# sqlplus scott/tiger
conn = OCI8.new("scott", "tiger")

# sqlplus scott/[email protected]
conn = OCI8.new("scott", "tiger", "orcl.world")

# sqlplus 'sys/change_on_install as sysdba'
conn = OCI8.new("sys", "change_on_install", nil, :SYSDBA)

# sqlplus scott/tiger@//Oracle_db.example.com/XE
conn = OCI8.new("scott", "tiger", "//Oracle_db.example.com/XE")

2)exec

exec(sql, *bindvars)

如果你沒有配置PL/SQL 沒有本地的tnsname 後者不想使用本地的TNSname 就可以直自己去定義個函數:

def open_connection
tnsnames = '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = somehost.somedomain.com)(PORT = 1521)) (CONNECT_DATA = (SID = some_sid)))'
connection = OCI8.new('your_username', 'your_passWord', tnsnames)
end

至於open_connection函數後面是否需要配置參數,看項目需求了。如果你的項目數據庫基本就是那麼一個的話 就可以直接在裡面定義了 

當然也可以傳參數

數據庫訪問地址變化多的話 那就是要傳參數了。。。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved