关于vb.net存取oracle数据库(转)

關於 VB.Net 存取 Oracle 資料庫



介紹 4 種 VB.Net 存取 Oracle 資料庫的基本寫法



u 傳統的 ADO Connection 開 Recordset 並把資料 “餵給” 新一代 ADO.Net 的 DataSet 並做資料存取

u ADO.Net 運用 OleDb 類別的 Connection , DataAdapter , Dataset , Command 等物件做處理資料

u ADO.Net 運用 Oracle 類別的 Connection , DataAdapter , Dataset , Command 等物件做處理資料

u ADO.Net 運用 ODBC 類別的 Connection , DataAdapter , Dataset , Command 等物件做處理資料





請先加入參考 System.Data 及 System.Data.OracleClient



' 匯入名稱空間

Imports System.Data

Imports System.Data.Odbc

Imports System.Data.OleDb

Imports System.Data.OracleClient

Imports System.Runtime.InteropServices



Public Class Form1



' Oracle SID 登錄資訊 , 請自行調整

Private strDSN As String = "資料來源"

Private strUID As String = "使用者"

Private strPWD As String = "密碼"



' Oracle OLEDB 連線字串

Private strCN As String = "Provider=MSDAORA.1" & _

";Data Source=" & strDSN & _

";User ID=" & strUID & _

";Password=" & strPWD



' SQL 語法, 查詢資料用( Select )

Private strQry As String = "select * from 某Table" ' 請自行調整



' SQL 語法, 更新資料用( Insert / Update )

Private strSQL As String = "Insert Into Table .. 或 Update Table Set .. " ' 請自行調整





' ================================================================





' 方法 1 :

' 使用 ADO 物件 , 透過 ADODB.Connection 開啟 ADODB.Recordset

' 並將 Recordset ( ADO ) 中之資料填入 Dataset ( ADO.Net ) 中

Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click



' ADODB.Connection 為 ADO 連線物件之 ProgID

' Type.GetTypeFromProgID 方法: 根據ProgID 取得物件的型別



Dim cn As Object = Activator.CreateInstance(Type.GetTypeFromProgID("ADODB.Connection"))



' Activator 成員 : 建立物件型別的方法,或取得對現有遠端物件的參考。

' Activator.CreateInstance 方法( 建構函式 ) : 建立指定型別之物件執行個體。

' 語法 : 物件 = Activator.CreateInstance(Type)



' 或 Dim cn As Object = CreateObject("ADODB.Connection")

' CreateObject 建構函式 : 建立並傳回 COM 物件的參考 ( 類別明確公開的 COM 元件 )



cn.CursorLocation = 3 ' adUseClient

cn.Open(strCN) ' 開啟連線物件 ( 連上 Oracle )



Dim rs As Object = cn.Execute(strQry) ' Select 資料

' Connection 物件.Execute 方法 : 執行指定的查詢、SQL 陳述式、預存程序。



Dim ds As New DataSet ' 建立資料集物件執行個體

Dim da As New OleDbDataAdapter ' 建立資料配接器物件執行個體



' 呼叫 DataAdapter.Fill 方法將資料填入資料集中

da.Fill(ds, rs, "Table1") ' Table1 為資料表格名稱 , 可自行調整命名

' 參數分別是資料集 ( Dataset ) , 資料錄集 ( Recordset ) , 資料表名稱 ( Table Name )



' 將資料集中資料表格的資料 Binding 至 DataGridView 以顯示資料

DataGridView1.DataSource = ds.Tables(0)



' 新增資料到資料庫中

cn.Execute(strSQL) ' Insert / Update 資料

' Connection物件.Execute 方法 : 執行指定的查詢、SQL 陳述式、預存程序。



da.Dispose() ' 釋放 Component 所使用的所有資源。

cn.Close() ' 關閉 Connection 物件之資料庫連線



' 釋放 Com 物件所使用的資源 , 遞減執行階段所呼叫包裝函式 ( RCW ) 的參考次數。

Marshal.ReleaseComObject(rs)

Marshal.ReleaseComObject(cn)



' MSDN 說明 :

' 當 COM 介面指標進入 Common Language Runtime 時,

' 會被包裝在執行階段可呼叫的包裝函式中。

' ReleaseComObject 方法被用來控制 Managed Code 中 COM 物件的生命週期 ( Lifetime ) 。

' 當COM 物件存有資源參考,或物件須釋放時,使用這個方法釋放 COM 物件。



GC.Collect() ' 強制記憶體回收



End Sub





' ================================================================





' 方法 2 :

' 使用 OleDb 類別的 Connection , DataAdapter , Command 物件來做 Oracle 資料處理

Private Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click



Dim cn As New OleDbConnection(strCN) ' 個體化 OleDb 連線物件

Dim da As New OleDbDataAdapter(strQry, cn) ' 個體化 OleDb 資料配接器

Dim ds As New DataSet ' 個體化資料集



da.Fill(ds) ' 使用資料配接器, 將資料填至資料集



' 將資料顯示於 DataGridView

DataGridView1.DataSource = ds.Tables(0)



cn.Open() ' 開啟資料庫連線



' 新增資料到資料庫中

Dim cmd As New OleDbCommand(strSQL, cn) ' 個體化 OleDb 命令物件

cmd.ExecuteNonQuery() ' 執行 SQL 命令 ( SQL Pass-through )



' 釋放資源

cmd.Dispose()

da.Dispose()

cn.Close()

cn.Dispose()



End Sub





' ================================================================





' 方法 3 :

' 使用 Oracle 類別的 Connection , DataAdapter , Command 物件來做 Oracle 資料處理

Private Sub Button4_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button4.Click



' OracleConnection 類別連線字串

Dim strCN As String = "Data Source=" & strDSN & _

";User ID=" & strUID & _

";Password=" & strPWD & _

";Persist Security Info=True"



Dim cn As New OracleConnection(strCN) ' 建立 OracleConnection 執行個體

Dim da As New OracleDataAdapter(strQry, cn) ' 建立 OracleDataAdapter 執行個體

Dim ds As New DataSet ' 建立 Dataset 執行個體



da.Fill(ds) ' 將資料填至資料集

DataGridView1.DataSource = ds.Tables(0) ' 顯示資料於 DataGridView



cn.Open() ' 連線資料庫

Dim cmd As New OracleCommand(strSQL, cn) ' 建立 OracleCommand 執行個體

cmd.ExecuteNonQuery() ' 執行查詢, 新增資料



' 釋放資源

cmd.Dispose()

da.Dispose()

cn.Close()

cn.Dispose()



End Sub





' ================================================================





' 方法 4 :

' 使用 ODBC 類別的 Connection , DataAdapter , Command 物件來做 Oracle 資料處理

Private Sub Button5_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button5.Click



' Oracle ODBC 驅動程式名稱

Dim strOracleDriver As String = "Oracle in OraDb10g_home1" ' 請自行調整



' PS: Oracle 的 ODBC Driver 會因 Oracle 版本不同而異 ( Driver 也不同 )

' M$ 提供的 Oracle Driver 為 Microsoft ODBC for Oracle

' Oracle 提供的 Native Driver :

' 8i 為 Oracle ODBC Driver

' 9i 為 Oracle in OraHome9X ( X 為 0 或 1 或 2 , 3 ... )

' 10g 版本 Driver 為 Oracle in OraDb10g_home1

' 可於 [ ODBC 資料來源管理員] 中查看 ( ODBCAD32.exe )



' Oracle ODBC 資料庫連線字串

Dim strCN As String = "DRIVER={" & strOracleDriver & "}" & _

";DBQ=" & strDSN & _

";UID=" & strUID & _

";PWD=" & strPWD



Dim cn As New OdbcConnection(strCN) ' 建立 OdbcConnection 執行個體

Dim da As New OdbcDataAdapter(strQry, cn) ' 建立 OdbcDataAdapter 執行個體

Dim ds As New DataSet ' 建立 DataSet 執行個體



da.Fill(ds) ' 將資料填至資料集

DataGridView1.DataSource = ds.Tables(0) ' 顯示資料於 DataGridView



cn.Open() ' 連線資料庫

Dim cmd As New OdbcCommand(strSQL, cn) ' 建立 OdbcCommand 執行個體

cmd.ExecuteNonQuery() ' 執行查詢, 新增資料



' 釋放資源

cmd.Dispose()

da.Dispose()

cn.Close()

cn.Dispose()



End Sub



End Class





' ================================================================





另外 , 也可以使用 Oracle 公司所提供的 ODP.Net



Oracle Data Provider for .NET



請參考Oracle 官方網站 http://www.oracle.com/technology/tech/windows/odpnet/index.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值