侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

在线管理数据库 类

数据库  /  管理员 发布于 6年前   318

<%
Class RLManDBCls
    Private sDBPath, RLConn, sDBType, sServerName, sUserName, sPassword
    Public Count    
    Private Sub Class_Initialize()
        sDBType = ""
    End Sub    
    Private Sub Class_Terminate()
        If IsObject(RlConn) Then
            RlConn.Close
            Set RlConn = Nothing
        End if
    End Sub    
    Public Property Let DBType(ByVal strVar)
        sDBType = strVar
    End Property
    Public Property Let ServerName(ByVal strVar)
        sServerName = strVar
    End Property
    Public Property Let UserName(ByVal strVar)
        sUserName = strVar
    End Property
    Public Property Let Password(ByVal strVar)
        sPassword = strVar
    End Property
    '设置数据库路径
    Public Property Let DBPath(ByVal strVar)
        sDBPath = strVar
        Select Case sDBType
        Case "SQL"
            StrServer = sServerName '数据库服务器名
            StrUid = sUserName '您的登录帐号
            StrSaPwd = sPassword '您的登录密码
            StrDbName = sDBPath '您的数据库名称            
            sDBPath = "driver={SQL server};server=" & StrServer & ";uid=" & StrUid & ";pwd=" & StrSaPwd & ";database=" & StrDbName
        Case "ACCESS",""
            sDBPath = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(sDBPath)
        End Select
        CheckData RLConn,sDbPath
    End Property 

    '检查数据库链接,(变量名,连接字串)
    Private Sub CheckData(DataConn,ConnStr)
        On Error Resume Next
        Set DataConn = Server.CreateObject("ADODB.Connection")
        DataConn.Open ConnStr
        If Err Then
            Err.Clear
            Set DataConn = Nothing
            ErrMsg("数据库连接出错:" & Replace(ConnStr,"\","\\") & ",\n请检查连接字串,确认您输入的数据库信息是否正确。")
            Response.End
        End If
    End Sub
    '检查表是否存在    
    Function CheckTable(TableName)
        On Error Resume Next
        RLConn.Execute("select * From " & TableName)
        If Err.Number <> 0 Then
            Err.Clear()
            Call ErrMsg("错误提示:" & Err.Description)
            CheckTable = False
        Else
            CheckTable = True
        End If
    End Function

    '错误提示信息(消息)
    Private Sub ErrMsg(msg)
        Response.Write msg
        Response.Flush
    End Sub
'---------------------------------------字段值的操作-----------------------------------------------
    '修改字段的值
    Public Sub upColumn(ByVal TableName, ByVal ColumnName, ByVal ValueText,ByVal WhereStr)
        On Error Resume Next
        If WhereStr <> ""  Then
            If InStr(WhereStr,"Where ")<=0 Then
                WhereStr = "Where " & WhereStr
            End if
        Else
            WhereStr = ""
        End if
        RLConn.Execute("update " & TableName & " set " & ColumnName & "=" & ValueText & " " & WhereStr)
        If Err.Number <> 0 Then
            Call ErrMsg("错误提示:" & Err.Description)
            Err.Clear()
        End If

    End Sub

    '执行SQL语句
    Public Sub Execute(StrSql)
        Set RsCount=Server.CreateObject("ADODB.RecordSet")
        On Error Resume Next
        RsCount = RLConn.Execute(StrSql)
        If Left(StrSql,12) = "Select Count" Then    Count = RsCount(0)
        If Err.Number <> 0 Then
            Call ErrMsg("错误提示:" & Err.Description)
            Err.Clear()
        End If
        RsCount.Close
        Set RsCount = Nothing
    End Sub
'---------------------------------------索引(Index),视图(View),主键操作-----------------------------------------------
    '添加字段索引
    Public Function AddIndex(ByVal TableName, ByVal IndexName, ByVal ValueText)
        On Error Resume Next
        RLConn.Execute("CREATE INDEX " & IndexName & " ON [" & TableName & "]([" & ValueText & "])")
        If Err.Number <> 0 Then
            Call ErrMsg ("在 " & TableName & " 表新建" & IndexName & "索引错误,原因" &  Err.Description & "请手工修改该索引。")
            Err.Clear()
            AddIndex = False
        Else
            AddIndex = True
        End If
    End Function

    '删除表索引
    Public Function DelIndex(ByVal TableName, ByVal IndexName)
        On Error Resume Next
        RLConn.Execute("drop空格INDEX [" & TableName & "]." & IndexName)
        If Err.Number <> 0 Then
            Call ErrMsg ("在 " & TableName & " 表删除" & IndexName & "索引错误,原因" &  Err.Description & "请手工删除该索引。")
            Err.Clear()
            DelIndex = False
        Else
            DelIndex = True
        End If
    End Function    
    '更改表TableName的定义把字段ColumnName设为主键
    Public Function AddPRIMARYKEY(ByVal TableName, ByVal ColumnName)
        On Error Resume Next
        TableName = Replace(Replace(TableName,"[",""),"]","")
        RLConn.Execute("ALTER TABLE "& TableName & " ADD CONSTRAINT PK_"&TableName&" PRIMARY KEY (" & ColumnName & ")")
        If Err.Number <> 0 Then
            Call ErrMsg ("在 " & TableName & " 将字段" & ColumnName & " 添加为主键时出错,原因 " & Err.Description & "请手工修改该字段属性。")
            Err.Clear()
            AddPRIMARYKEY = False
        Else
            AddPRIMARYKEY = True
        End If
    End Function    
    '更改表TableName的定义把字段ColumnName主键的定义删除
    Public Function DelPRIMARYKEY(ByVal TableName, ByVal ColumnName)
        On Error Resume Next
        RLConn.Execute("ALTER TABLE "& TableName & " drop空格PRIMARY KEY (" & ColumnName & ")")
        If Err.Number <> 0 Then
            Call ErrMsg ("在 " & TableName & " 将字段" & ColumnName & " 主键的定义删除时出错,原因" & Err.Description & "请手工修改该字段属性。")
            Err.Clear()
            DelPRIMARYKEY = False
        Else
            DelPRIMARYKEY = True
        End If
    End Function    
    '检查主键是否存在,返回该表的主键名
    Function GetPrimaryKey(TableName)
        on error Resume Next
        Dim RsPrimary
        GetPrimaryKey = ""
        Set RsPrimary = RLConn.OpenSchema(28,Array(Empty,Empty,TableName))
        If Not RsPrimary.Eof Then GetPrimaryKey = RsPrimary("COLUMN_NAME")
        Set RsPrimary = Nothing
        If Err.Number <> 0 Then
            Call ErrMsg("数据库不支持检测数据表 " & TableName & " 的主键。原因 :" & Err.Description)
            Err.Clear()
        End If
    End Function
'---------------------------------------表结构操作-----------------------------------------------
    '添加新字段
    Public Function AddColumn(TableName,ColumnName,ColumnType)
        On Error Resume Next
        RLConn.Execute("Alter Table [" & TableName & "] Add [" & ColumnName & "] " & ColumnType & "")
        If Err Then
            ErrMsg ("新建 " & TableName & " 表中字段错误,请手动将数据库中 <B>" &  ColumnName & "</B> 字段建立,属性为 <B>"&ColumnType& "</B>,原因" & Err.Description)
            Err.Clear
            AddColumn = False
        Else
            AddColumn = True
        End If
    End Function
    '更改字段通用函数
    Public Function ModColumn(TableName,ColumnName,ColumnType)
        On Error Resume Next
        RLConn.Execute("Alter Table [" & TableName & "] Alter Column [" & ColumnName & "] " & ColumnType & "")
        If Err Then
            Call ErrMsg ("更改 " & TableName & " 表中字段属性错误,请手动将数据库中 <B>" &  ColumnName & "</B> 字段更改为 <B>" & ColumnType &  "</B> 属性,原因" & Err.Description)
            Err.Clear
            ModColumn = False
        Else
            ModColumn = True
        End If
    End Function    
    '删除字段通用函数
    Public Function DelColumn(TableName,ColumnName)
        On Error Resume Next
        If sDBType = "SQL" THen 
            RLConn.Execute("Alter Table [" & TableName & "] drop空格Column [" & ColumnName & "]")
        Else
            RLConn.Execute("Alter Table [" & TableName & "] drop空格[" & ColumnName & "]")
        End if
        If Err Then 
            Call ErrMsg ("删除 " & TableName & " 表中字段错误,请手动将数据库中 <B>" &  ColumnName & "</B> 字段删除,原因" & Err.Description)
            Err.Clear
            DelColumn = False
        Else
            DelColumn = True
        End If
    End Function
'---------------------------------------表操作---------------------------------------------------
    '打开表名对象
    Private Sub ReNameTableConn()
        On Error Resume Next
        Set objADOXDatabase = Server.CreateObject("ADOX.Catalog")
        objADOXDatabase.ActiveConnection = ConnStr
        If Err Then
            ErrMsg("建立更改表名对象出错,您所要升级的空间不支持此对象,您很可能需要手动更改表名,原因" & Err.Description)
            Response.End
            Err.Clear
        End If
    End Sub
    '关闭表名对象
    Private Sub CloseReNameTableConn()
        Set objADOXDatabase = Nothing
        Conn.Close
        Set Conn=Nothing
    End Sub
    '更改数据库表名,入口参数:老表名、新表名
    Public Function RenameTable(oldName, newName)
        On Error Resume Next
        Call ReNameTableConn
        objADOXDatabase.Tables(oldName).Name = newName
        If Err Then
            Call ErrMsg ("更改表名错误,请手动将数据库中 <B>" & oldName & "</B> 表名更改为 < B>" & newName & "</B>,原因" & Err.Description)
            Err.Clear
            RenameTable = False
        Else
            RenameTable = True
        End If
        Call CloseReNameTableConn
    End Function
    '删除表通用函数
    Public Function DelTable(TableName)
        On Error Resume Next
        RLConn.Execute("drop空格Table [" & TableName & "]")
        If Err Then
            ErrMsg ("删除 " & TableName & " 表错误,请手动将数据库中 <B>" &  TableName&"</B> 表删除,原因" & Err.Description)
            Err.Clear
            DelTable = False
        Else
            DelTable = True
        End If
    End Function

    '建立新表
    Public Function CreateTable(ByVal TableName,ByVal FieldList)
        Dim StrSql
        If sDBType = "SQL" THen
            StrSql = "CREATE TABLE [" & TableName & "]( " & FieldList & ")"
        Else
            StrSql = "CREATE TABLE [" & TableName & "]"
        End if
        RLConn.Execute(StrSql)
        If Err.Number <> 0 Then
            Call ErrMsg("新建 " & TableName & " 表错误,原因" & Err.Description & "")
            Err.Clear()
            CreateTable = False
        Else
            CreateTable = True
        End If
    End Function


'---------------------------------------数据库操作-----------------------------------------------

    '建立数据库文件
    Public function CreateDBfile(byVal dbFileName,byVal SavePath)
        On error resume Next
        SavePath = Replace(SavePath,"/","\")
        If Right(SavePath,1)<>"\" Or Right(SavePath,1)<>"/" Then SavePath = Trim(SavePath) & "\"
        If Left(dbFileName,1)="\" Or Left(dbFileName,1)="/" Then dbFileName = Trim(Mid(dbFileName,2,Len(dbFileName)))
        If DbExists(AppPath() & SavePath & dbFileName) Then
            ErrMsg("对不起,该数据库已经存在!" & AppPath() & SavePath & dbFileName)
            CreateDBfile = False
        Else
            Response.Write  AppPath() & SavePath & dbFileName
            Dim Ca
            Set Ca = Server.CreateObject("ADOX.Catalog")
            If Err.number<>0 Then
                ErrMsg("无法建立,请检查错误信息<br>" & Err.number & "<br>" & Err.Description)
                Err.Clear
                CreateDBfile = False
                Exit function
            End If
            call Ca.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AppPath() & SavePath & dbFileName)
            Set Ca = Nothing
            CreateDBfile = True
        End If
    End function

    '查找数据库文件是否存在
    Private function DbExists(byVal dbPath)
        On Error resume Next
        Dim c
        Set c = Server.CreateObject("ADODB.Connection")
        c.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath
        If Err.number<>0 Then
            Err.Clear
            DbExists = false
        else
            DbExists = True
        End If
        set c = nothing
    End function
    '取当前真实路径
    Private function AppPath()
        AppPath = Server.MapPath("./")
        If Right(AppPath,1) = "\" THen
            AppPath = AppPath
        ELse
            AppPath = AppPath & "\"
        End if
    End function

    '删除一个数据库文件
    Public function DeleteDBFile(filespec)
        filespec = AppPath() & filespec
        Dim fso
        Set fso = CreateObject("Scripting.FileSystemObject")
        If Err.number<>0 Then
            ErrMsg("删除文件发生错误!请查看错误信息:" & Err.number & " " & Err.Description & "<br>") 
            Err.Clear
            DeleteDBFile = False
        End If
        If DbExists(filespec) THen
            call fso.DeleteFile(filespec)
            DeleteDBFile = True
        Else
            ErrMsg("删除文件发生错误!请查看错误信息:" & Err.number & " " & Err.Description & "<br>") 
            DeleteDBFile = False
            Exit Function
        End if
        Set fso = Nothing
    End function

    '修改一个数据库名
    Public function RenameDBFile(filespec1,filespec2)
        filespec1 = AppPath() & filespec1:filespec2 = AppPath() & filespec2
        Dim fso
        Set fso = CreateObject("Scripting.FileSystemObject")
        If Err.number<>0 Then
  


  • 上一条:
    用Asp备份与恢复SQL Server 数据库
    下一条:
    一个基于flask的web应用诞生 flask和mysql相连(4)
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 分库分表的目的、优缺点及具体实现方式介绍(0个评论)
    • DevDB - 在 VS 代码中直接访问数据库(0个评论)
    • 在ubuntu系统中实现mysql数据存储目录迁移流程步骤(0个评论)
    • 在mysql中使用存储过程批量新增测试数据流程步骤(0个评论)
    • php+mysql数据库批量根据条件快速更新、连表更新sql实现(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2017-06
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-05
    • 2018-10
    • 2018-11
    • 2020-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2021-02
    • 2021-04
    • 2021-07
    • 2021-08
    • 2021-11
    • 2021-12
    • 2022-02
    • 2022-03
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-07
    • 2023-08
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客