请教啊!
我有个程序用到数据库,我在程序里想完成数据库备份功能,
数据库是ACCESS的!谢谢大家!

解决方案 »

  1.   

    用DOS命令Shell "command.com /c copy 源路径 目标路径"
      

  2.   

    我刚才又试了下,新建一个工程,在窗体上放置一个命令按钮Command1代码:
    Private Sub Command1_Click()
    Shell "command.com /c copy 工程1.exe 工程1.bak"
    End Sub生成工程1.exe,运行,按下按钮后即在当前路径下产生一个工程1.bak的文件
      

  3.   

    '备份数据
    Public Function BackupMDB() As Boolean
    On Error GoTo ErrLab
        BackupMDB = False
        
        Screen.MousePointer = 11
        
        If CopyFile(MdbSourcePath, MdbBackupPath, False) = 0 Then
            Screen.MousePointer = 0
            MsgBox "备份失败!" & vbCrLf & "请确保其它应用程序没有使用当前数据库!" & vbCrLf & "然后关闭其它所有子窗体后再备份!", vbInformation, "提示"
        Else
            Screen.MousePointer = 0
            BackupMDB = True
            MsgBox "备份成功!", vbInformation, "祝贺"
        End If
        Exit Function
    ErrLab:
        Screen.MousePointer = 0
        MsgBox "发生意外错误!请稍后再试" & vbCrLf & Err.Description, vbInformation + vbOKOnly, "消息"
    End Function'恢复数据库
    Public Function RestoreMDB() As Boolean
    On Error Resume Next
        Dim tempCon As ADODB.Connection
        Dim tempRs As ADODB.Recordset
        RestoreMDB = True    If MsgBox("该操作把当前数据库替换为之前备份过的数据库。执行之后将不可撤消!" & vbCrLf & "您确定要恢复当前数据库吗?", vbQuestion + vbOKCancel + vbDefaultButton2, "小心!") = vbCancel Then
           Exit Function
        End If
        
        Set tempCon = New ADODB.Connection
        Set tempRs = New ADODB.Recordset
        
        tempCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & MdbBackupPath & ";jet oledb:database password=kdsfjkd"
        tempRs.Open "Select * from Document", tempCon, adOpenStatic, adLockOptimistic
        If Err.Number <> 0 Then
            MsgBox "以前尚未备份过,或者已经备份的数据库已被破坏,不能进行恢复!", vbInformation, "提示信息"
        Else
            '关闭连接
            tempRs.Close
            tempCon.Close
            Set tempCon = Nothing
            
            con.Close '先关闭全局连接
            
            If CopyFile(MdbBackupPath, MdbSourcePath, False) = 0 Then
                MsgBox "请确保其它应用程序没有使用当前数据库!" & vbCrLf & vbCrLf & _
                       "然后关闭其它所有子窗体后再恢复!", vbInformation, "恢复失败"
            Else
                MsgBox "恢复成功!", vbInformation, "祝贺"
            End If
            
            ConnectDatabase con '再开启全局连接
        End If
    End Function
      

  4.   

    '引用JRO.压缩备份/恢复/修复数据库'
    '恢复和备份MDB数据库
    '函数名:BakResumeMdb
    '参数:P_Cnn ADODB连接,SourFileName 源文件名,ObjFileName 目标文件名,
    '     Provider Provider参数(视JET版而定,默认是4.0),UserID 用户名,
    '     UserPwd 密码,WorkType 操作类型(0 备份,1 恢复)
    '返回值:TRUE 成功,FALSE 失败.
    '注:当WorkType=0时,源文件名是要备份文件,目标文件名是备份文件.
    '   当WorkType=1时,源文件名是备份文件,目标文件名要恢复的文件.
    Public Function BakResumeMDB(P_Cnn As ADODB.Connection, _
                           SourFileName As String, _
                           ObjFileName As String, _
                           Optional Provider As String = "Microsoft.Jet.OLEDB.4.0", _
                           Optional UserID As String = "admin", _
                           Optional UserPwd As String = "", _
                           Optional WorkType As Long = 0) As Boolean
        
        Dim Yjro As New JRO.JetEngine
        Dim WorkPath As String
        Dim FileCon As New SmFileCls
        
        On Error Resume Next
        '/关闭连接
        P_Cnn.Close: Set P_Cnn = Nothing
        DoEvents
        '/-------------------------------
        '/压缩
        Yjro.CompactDatabase "Provider=" & Provider & SourFileName & ";" & _
                             "Jet OLEDB:Database Password=" & UserPwd & ";" & _
                             "User ID=" & UserID & ";", _
                             "Provider=" & Provider & ";Data Source=" & ObjFileName & ";" & _
                             "Jet OLEDB:Database Password=" & UserPwd & ";" & _
                             "User ID=" & UserID & ";"
        DoEvents
        '/删除旧文件,将压缩后的文件COPY到旧位置
        If Not (FileCon.FileCheck(SourFileName) And FileCon.FileCheck(ObjFileName)) Then
           If WorkType = 0 Then
              '/备份。
              Call CreateMdbConn(P_Cnn, SourFileName, , UserID, UserPwd)
           Else
              '/恢复
              Call CreateMdbConn(P_Cnn, ObjFileName, , UserID, UserPwd)
           End If
           Err.Number = -1
        End If
        Set FileCon = Nothing
        Set Yjro = Nothing: Err.Clear
        BakResumeMDB = (Err.Number = 0)
    End Function