(原创)备份数据库类 Access篇

因为某此原因有时需要备份数据库,如SQL数据库的备份,但SQL数据库的备份有时有点麻烦,直接在页面不好弄,所以就这个原因,写了以下类.此类很简单,设置好备份文件地址和数据源后就直接Transfer。类使用方法在以下的注解有详细说明。此类还有一些好处是可以对每个不同的表可以保存到不同的文件,并且又不用重新定义类,方法就是在Transfer表之前换一个不同的目标文件,如:
ObjClass.TargetFile=tFile
sResult=ObjClass.Transfer("number","number","","")
ObjClass.TargetFile=Server.Mappath(".")&"/new.mdb"
sResult=ObjClass.Transfer("Test","Test","","")

<%
Class TransferDataBaseClass
'/***************************************************************************
'/*               转移数据类(备份数据库类)
'/*作者:死在水中的鱼(死鱼)
'/*日期:2004年8月3日
'/*Blog:http://blog.csdn.com/bpfish
'/*
'/*用法:
'/*方法一:(Access数据库文件 TO Access数据库文件)
'/*1、先设置源数据库文件SourceFile(可选)和目标数据库文件TargetFile(必选)
'/*2、再使用Transfer("源表名","目标表名","字段列表","转移条件")方法转移数据
'/*例子:
'/*   Dim sFile,tFile,ObjClass,sResult
'/*   sFile=Server.MapPath("data/data.mdb")
'/*   tFile=Server.Mappath(".")&"/back.mdb"
'/*   Set ObjClass=New TransferDataBaseClass
'/*   ObjClass.SourceFile=sFile
'/*   ObjClass.TargetFile=tFile
'/*   sResult=ObjClass.Transfer("table1","newtable","","")
'/*   If sResult Then
'/*      Response.Write "转移数据成功!"
'/*   Else
'/*      Response.Write "转移数据失败!"
'/*   End If
'/*   Set ObjClass=Nothing
'/*
'/*方法二:(其它数据库文件 To Access数据库文件)
'/*1、设置目标数据库文件TargetFile
'/*2、设置Adodb.Connection对象
'/*3、再使用Transfer("源表名","目标表名","字段列表","转移条件")方法转移数据
'/*例子:(在此使用Access的数据源做例子,你可以使用其它数据源)
'/*   Dim Conn,ConnStr,tFile,ObjClass,sResult
'/*   tFile=Server.Mappath(".")&"/back.mdb"
'/*   Set Conn=Server.CreateObject("ADODB.Connection")
'/*   ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/data.mdb")
'/*   Conn.Open ConnStr
'/*   Set ObjClass=New TransferDataBaseClass
'/*   Set ObjClass.Conn=Conn        '此处关键
'/*   ObjClass.TargetFile=tFile
'/*   sResult=ObjClass.Transfer("table1","newtable","","")
'/*   If sResult Then
'/*      Response.Write "转移数据成功!"
'/*   Else
'/*      Response.Write "转移数据失败!"
'/*   End If
'/*   Set ObjClass=Nothing
'/*   Conn.Close
'/*   Set Conn=Nothing
'/*  
'/*说明:TargetFile属性一定要设置!(备份文件地址,绝对地址!)
'/*      如果不设置SourceFile则一定要设置Conn,这两个属性必选之一,但优先权是Conn
'/*      方法:Transfer("源数据表名","目标数据表名","字段列表","转移条件")
'/*           “源数据表”一定要在数据源存在,“目标数据表”则不可存在于目标文件
'/*           “字段列表;转移条件”格式与SQL的“字段列表”,“查询条件”格式相同
'/*            "字段列表"为空则是所有字段,“查询条件”为空则获取所有数据
'/***************************************************************************

Private s_Conn,Adox
'/***************************************************************************
'/*             全局变量
'/*外部直接使用:[Obj].SourceFile=源文件名   [Obj].TargetFile=目标文件名
'/***************************************************************************
Public SourceFile,TargetFile


Private Sub Class_Initialize
        s_Conn=Null
End Sub
Private Sub Class_Terminate
        If IsObject(s_Conn) And Not IsNull(s_Conn) Then
              s_Conn.Close
              Set s_Conn=Nothing
           End If
           If IsObject(Adox) Then
              Set Adox=Nothing
           End If
End Sub

'/***************************************************************************
'/*             设置/返回Conn对象
'/*说明:添加这个是为了其它数据库(如:MSSQL)到ACCESS数据库的数据转移而设置的
'/***************************************************************************
Public Property Set Conn(sNewValue)
       If Not IsObject(sNewValue) Then
           s_Conn=Null
        Else
           Set s_Conn=sNewValue
        End If
End Property
Public Property Get Conn
       If IsObject(s_Conn) Then
           Set Conn=s_Conn
        Else
           s_Conn=Null
        End If
End Property

'/***************************************************************************
'/*             数据转移
'/*函数功能:转移源数据到TargetFile数据库文件
'/*函数说明:利用SQL语句的Select Into In方法转移
'/*函数返回:返回一些状态代码True = 转移数据成功   False = 转移数据失败
'/*函数参数:sTableName = 源数据库的表名   tTableName = 目标数据库的表名(自动创建,如果存在则出错)
'/*         sCol = 要转移数据的字段列表,格式则同Select 的字段列表格式相同
'/*         sSql = 转移数据时的条件 同SQL语句的Where 后面语句格式一样
'/***************************************************************************
Public Function Transfer(sTableName,tTableName,sCol,sSql)
On Error Resume Next
Dim SQL
       If Not InitConn Then          '如果不能初始化Conn对象则转移数据出错
           Transfer=False
             Exit Function
        End If
       If Not CreateMdbFile Then     '建立备份Access数据库文件出错则转移数据出错
           Transfer=False
             Exit Function
        End If
       If sSql<>"" Then              '条件查询
           sSql=" Where "&sSql
        End If
        If sCol="" Then               '字段列表,以","分隔
           sCol="*"
        End If
       SQL="SELECT "&sCol&" INTO ["&tTableName&"] IN '" & TargetFile & "'" & " FROM ["&sTableName&"]"&sSql
        s_Conn.Execute SQL
        If Err.Number<>0 Then         '出错则转移数据错误,否则转移数据成功
           Err.Clear
          Transfer=False
        Else
           Transfer=True
        End If
End Function

'/***************************************************************************
'/*             建立Access数据库文件
'/*函数功能:根据TargetFile的值建立该文件
'/*函数说明:利用Adox组件的Create方法建立数据库文件
'/*函数返回:返回一些状态代码
'/***************************************************************************
Private Function CreateMdbFile()
On Error Resume Next
           If TargetFile="" Then
              CreateMdbFile=False         '出错
              Exit Function
           End If
           If Not InitAdox Then           '初始化Adox对象,建立MDB文件
              CreateMdbFile=False         '初始化Adox时出错
              Exit Function
           End If
           Adox.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TargetFile
        If Err.Number<>0 Then          '建立MDB文件出错
              If Err.Number=-2147217897 Then
                 CreateMdbFile=True       '文件已存在,所以建立成功
              Else
                 CreateMdbFile=False      '其它原因出错
              End If
              Err.Clear
              Exit Function            
           End If
           CreateMdbFile=True            '建立MDB文件成功
End Function

'/***************************************************************************
'/*             初始化Adox.Catalog组件对象
'/*
'/***************************************************************************
Private Function InitAdox()
On Error Resume Next
        If Not IsObject(Adox) Or IsNull(Adox) Then
              Set Adox=Server.CreateObject("ADOX.Catalog")
              if Err.Number<>0 Then
                 InitAdox=False
                   Err.Clear
                   Adox=Null
                   Exit Function
              End If
           End If
           InitAdox=True
End Function

'/***************************************************************************
'/*             初始化Adodb.Connection组件对象
'/*
'/***************************************************************************
Private Function InitConn()
On Error Resume Next
Dim ConnStr
        If Not IsObject(s_Conn) Or IsNull(s_Conn) Then
              If SourceFile="" Then
                 InitConn=False
                   Exit Function
              Else
                 Set s_Conn=Server.CreateObject("ADODB.Connection")
                 ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & SourceFile
                 s_Conn.Open ConnStr
                   If Err.Number<>0 Then
                      InitConn=False
                        Err.Clear
                        s_Conn=Null
                        Exit Function
                   End If
              End If
           End If
           InitConn=True
End Function
End Class
%>
展开阅读全文

没有更多推荐了,返回首页