注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 IB客座主编(四)美国西蒙公..
 帮助

VB.Net 透過 JRO 修復 Access MDB


2007-03-09 13:10:38
 标签:.net access   [推送到技术圈]

VB.Net 透過 JRO Compact / Repair Access MDB
 
Imports System
Imports System.IO
 
Public Class Form1
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' C:\db1.mdb Compact / Repair
        If Compact_MDB("C:\db1.mdb") Then MessageBox.Show("OK !")
    End Sub
 
    Private Function Compact_MDB(ByVal strFile As String) As Boolean
 
        ' Jet Access (MDB) 連線字串; Jet ( Joint Engine Technology )
        Dim strCn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}"
 
        ' "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Jet OLEDB:Engine Type=5"
 
        ' Path.GetTempFileName 方法: 在磁碟上建立具命之零位元組的唯一暫存檔案,
        '   然後傳回該檔案的完整路徑。
        Dim strTmpFile As String = Path.GetTempFileName.Replace(".tmp", ".mdb") ' tmp 副檔名改成mdb
 
        ' 建立物件陣列存放引數(參數) , 來源, 目的
        Dim objPara As Object() = New Object() {String.Format(strCn, strFile), String.Format(strCn, strTmpFile)}
 
        ' Activator 成員: 包含本機或遠端建立物件型別的方法,或者取得對現有遠端物件的參考。
        ' Activator.CreateInstance 方法(Type)  : 使用最符合指定參數的建構函式,建立指定型別的執行個體。
        Dim objJRO As Object = Activator.CreateInstance(Type.GetTypeFromProgID("JRO.JetEngine"))
        ' Type.GetTypeFromProgID 方法: 取得與指定的程式識別項(ProgID) 關聯的型別;
        '   如果在載入Type 時發生錯誤,則傳回null
        ' JRO.JetEngine Microsoft Jet and Replication Objects X.X library 
 
        ' Type.InvokeMember 方法
        ' Type.InvokeMember (String, BindingFlags, Binder, Object, Object[])
        objJRO.GetType.InvokeMember("CompactDatabase", Reflection.BindingFlags.InvokeMethod, _
                                                                    Nothing, objJRO, objPara)
 
        ' 使用指定的繫結條件約束並符合指定的引數清單,來叫用指定的成員。
        ' BindingFlags 列舉型別,InvokeMethod 指定要叫用方法。
 
        File.Delete(strFile) ' File.Delete 方法: 刪除Compact 前之mdb
        File.Move(strTmpFile, strFile) ' File.Move 方法: Compact 過的mdb 檔改成()正確檔名
 
        ' Marshal.ReleaseComObject 方法釋放JRO COM 物件
        Runtime.InteropServices.Marshal.ReleaseComObject(objJRO)
        objJRO = Nothing
 
        Return True
 
    End Function
 
End Class
 
 
 
================================================================ 
 
 
相關主題參考 :
 
關於 Access MDB 修復 ( 修復及壓縮 ACCESS MDB )
 




    文章评论
 
 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: