VB.Net 如何將 Oracle 的 DataSet 資料 匯入 Access MDB 中

VB.Net 如何將 Oracle 的 DataSet 資料 匯入 Access MDB 中

VB.Net 如何將 Oracle 的 DataSet 資料 匯入 Access MDB 中

如何將 Oracle 開啟 Dataset 中的 資料 匯入至 Access MDB Table 中呢 ?

方法其實有很多種 , 底下介紹一種方式給大家參考看看

l DataSet -> XML -> MDB Table

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


請先加入參考 Oracle.DataAccess

Imports Oracle.DataAccess.Client

Imports System.Runtime.InteropServices

Public Class Form1

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

Private strDSN As String = "資料來源"

Private strUID As String = "使用者"

Private strPWD As String = "密碼"

' Oracle ODP.Net 連線字串

Private strCn As String = "Data Source=" & strDSN & ";User Id=" & strUID & ";Password=" & strPWD

' SQL 語法 , 查詢資料用 ( Select ) , 請自行調整

Private strQry As String = "Select CustName,Tel,Address From Customer"

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

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

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

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

Dim strMdbFile As String = "C:\TestDB.mdb" ' Access MDB 路徑 + 檔名 , 請自行調整

da.Fill(ds, "資料表名稱") ' 將資料填至資料集 ( 將會是 MDB 的 Table 名稱 )

CreateMDB(strMdbFile) ' 建立 Access MDB 檔案

DataSet_To_Access_MDB_Table(ds, strMdbFile) ' 將 DataSet 資料填至 MDB 中

End Sub

' 建立 Access MDB 檔案

Private Sub CreateMDB(ByVal strMDB As String)

' 根據 ProgID 建立 ADOX.Catalog 執行個體

Dim cat As Object = Activator.CreateInstance(Type.GetTypeFromProgID("ADOX.Catalog"))

' 使用 Catalog 的 Create 方法 , 透過 Jet OLEDB Driver 建立 Access MDB 資料庫

cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMDB)

' 釋放 COM 物件所使用的資源

Runtime.InteropServices.Marshal.ReleaseComObject(cat)

End Sub

' 將 DataSet 中資料匯入至 Access MDB 中 ( 自動建立資料表格結構 )

Private Sub DataSet_To_Access_MDB_Table(ByRef ds As DataSet, ByVal strMDB As String)

' Windows 的暫存檔路徑位置 + XML 資料暫存檔

Dim strXML As String = Environment.GetEnvironmentVariable("Temp") & "\XMLdata.xml"

' 將 DataSet 寫成 XML 檔案。( 結構描述 + XML 資料)

ds.WriteXml(strXML, XmlWriteMode.WriteSchema)

' 根據 ProgID 建立 Access.Application ( Access ) 執行個體

Dim objApp As Object = Activator.CreateInstance(Type.GetTypeFromProgID("Access.Application"))

With objApp

.OpenCurrentDatabase(strMDB) ' 開啟 MDB 資料庫檔案

.ImportXML(strXML, 1) ' 建立資料結構 ( Table ) , 並匯入 XML 資料 ( 1 = acStructureAndData )

.CloseCurrentDatabase() ' 關閉資料庫

.Quit() ' 關閉 Access 執行個體

End With

' 釋放 COM 物件所使用的資源

Runtime.InteropServices.Marshal.ReleaseComObject(objApp)

' 刪除 XML 資料暫存檔

System.IO.File.Delete(strXML)

End Sub

End Class

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

PS : 以上 Sample 以 ODP.Net 寫成

可自行調整成 System.Data.OracleClient 或 System.Data.OleDb 的寫法