<%
'====================================
'H----------Access和SQL共用数据库操作类,所有SQL语句以SQL为准
'====================================
Class DbClass
Public Conn
Private ConnStr
Private ErrorInfo
'初始化类
Public Sub Class_Initialize
Select Case Cfg.DBType
Case "MSSQL"
ConnStr = "Provider = Sqloledb; User ID = "& Cfg.SqlUsername &"; Password = "& Cfg.SqlPassword &"; Initial Catalog = "& Cfg.SqlDatabaseName &"; Data Source = "& Cfg.SqlLocalName &";"
Case "MSSQL_W"
ConnStr = "Provider = Sqloledb;Integrated Security = SSPI;Persist Security Info = False;Data Source =.;Initial Catalog = "& Cfg.SqlDatabaseName &";"
Case "AC"
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = "& Server.Mappath(Cfg.dbPath)
Case Else
Response.Write "
'函数:创建数据库链接
Public Function DbOpen()
If IsObject(Conn) Then Exit Function
Set Conn = Server.CreateObject(Cfg.nConnectionObject)
If Conn.State = 1 Then Exit Function
On Error Resume Next
Conn.Open ConnStr
If Err.Number Then
ErrorInfo = Err.Description
Err.Clear
Set Conn = Nothing
Response.Write "
'函数:关闭数据库链接
'参数:链接串
Public Function DbClose()
If Not IsObject(Conn) Then Exit Function
If Conn.State = 0 Then Exit Function
Conn.Close:Set Conn = Nothing
End Function
'函数:创建数据库RecordSet对象
'参数:链接串
Public Function RecordSet(obj)
Set obj = Server.CreateObject(Cfg.nRecordSetObject)
End Function
'函数:根据当前数据库类型转换Sql脚本
'参数:Sql串
'返回:转换结果Sql串
Public Function SqlTran(Sql)
If Cfg.DBType = "AC" Then
SqlTran = Sql2Access(Sql)
Else
SqlTran = Sql
End If
End Function
'函数:数据库脚本执行(代Sql转换)
'参数:Sql脚本
'返回:执行结果
'说明:本执行可自动根据数据库类型对部分Sql基础语法进行转换执行
Public Function Execute(Sql)
Sql = SqlTran(Sql)
On Error Resume Next
DbOpen()
Set Execute = Conn.Execute(Sql)
If Err.Number <> 0 Then
Response.Write "
'函数:执行SQL返回二维数组
'参数:Sql脚本
'返回:二维数组对象
Public Function Query(Sql)
Dim RsTmp,TmpArray
Sql = SqlTran(Sql)
On Error Resume Next
DbOpen()
Set RsTmp=Conn.Execute(Sql)
If Err.Number <> 0 Then
Response.Write "
'[获取指定单字段记录]
'scCol使用“|”分别分割唯一字段名,表名,条件约束字段名
'scValue传递的指定参数
'scNoneText无记录时的替代文字
'Codes By konghu
Public Function GetSpecialCol(scCol,scValue,scNoneText)
Dim arrCol,Sql,Tmp
arrCol = Split(scCol,"@")
If IsNumeric(scNoneText) Then
Sql = "Select " & arrCol(0) & " From ["& Cfg.tablePrefix &"" & arrCol(1) & "] Where " & arrCol(2) & " = " & scValue
Else
Sql = "Select " & arrCol(0) & " From ["& Cfg.tablePrefix &"" & arrCol(1) & "] Where " & arrCol(2) & " = '" & scValue & "'"
End If
'Response.Write(Sql&"
")
Tmp = Query(Sql)
If IsNull(Tmp) Or IsEmpty(Tmp) Then
GetSpecialCol = scNoneText
Else
if isNull(Tmp(0,0)) = false then
GetSpecialCol = Tmp(0,0)
else
GetSpecialCol = scNoneText
end if
End If
End Function
'作用:验证数据是否已存在(true不存在/false存在)
'参数:值,字段,附加条件,表,ID
Public Function ChkSameValue(value,field,whereStr,table,id)
DbOpen()
Dim temp,whereString
If whereStr = "" Then
whereString = ""
Else
whereString = whereStr &" AND "
End if
If id = "" Or IsNull(id) Or IsEmpty(id) then
temp = Conn.Execute("SELECT COUNT(*) FROM ["& Cfg.tablePrefix & table &"] WHERE "& whereString & field &" = '"& value &"'")(0)
Else
temp = Conn.Execute("SELECT COUNT(*) FROM ["& Cfg.tablePrefix & table &"] WHERE "& whereString & field &" = '"& value &"' AND id <> "& id)(0)
End If
rem response.write("SELECT COUNT(*) FROM ["& Cfg.tablePrefix & table &"] WHERE "& whereString & field &" = '"& value &"'"&"
")
If temp = 0 Then
ChkSameValue = True
Else
ChkSameValue = False
End if
End Function
'//批量语句事务处理
Function BeginTran(this)
If this = "" or Isnull(this) Then exit Function
Dim I
On Error Resume next
DbOpen()
this = split(this,"$split$")
Conn.BeginTrans'//启动事务
For I = 0 To uBound(this)
response.write(this(I)&"
")
Conn.Execute(this(I))
If Conn.Errors.Count>0 Then
Response.Write "
'函数:SqlServer to Access(97-2000)
'参数:Sql,数据库类型(ACCESS,SQLSERVER)
'说明:
Private Function Sql2Access(Sql)
Dim regEx, Matches, Match
'创建正则对象
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.MultiLine = True
'转:GetDate()
regEx.Pattern = "(?=[^']?)GETDATE()(?=[^']?)"
Sql = regEx.Replace(Sql,"NOW()")
'转:UPPER()
regEx.Pattern = "(?=[^']?)UPPER([s]?(.+?)[s]?)(?=[^']?)"
Sql = regEx.Replace(Sql,"UCASE($1)")
'转:日期表示方式
'说明:时间格式必须是2004-23-23 11:11:10 标准格式
regEx.Pattern = "'([d]{4,4}-[d]{1,2}-[d]{1,2}(?:[s][d]{1,2}:[d]{1,2}:[d]{1,2})?)'"
Sql = regEx.Replace(Sql,"#$1#")
regEx.Pattern = "DATEDIFF((.*?),"
Set Matches = regEx.Execute(Sql)
Dim temStr
For Each Match In Matches
temStr = "DATEDIFF("
Select Case Trim(LCase(Match.SubMatches(0)))
Case "s" :
temStr = temStr &"'s',"
Case "n" :
temStr = temStr &"'n',"
Case "h" :
temStr = temStr &"'h',"
Case "d" :
temStr = temStr &"'d',"
Case "m" :
temStr = temStr &"'m',"
Case "y" :
temStr = temStr &"'y',"
End Select
Sql = Replace(Sql,Match.Value,temStr,1,1)
Next
'转:Insert函数
regEx.Pattern = "CHARINDEX([s]?'(.+?)'[s]?,[s]?'(.+?)'[s]?)[s]?"
Sql = regEx.Replace(Sql,"INSTR('$2','$1')")
Set regEx = Nothing
Sql2Access = Sql
End Function
'************************************
'GetConn返回当链接对象
'************************************
Public Property Get GetConn
DbOpen()
Set GetConn = Conn
End Property
'注消类
Private Sub Class_Terminate
DbClose
End Sub
End Class
Class SQLString'//SQL生成类
'************************************
'变量定义
'************************************
'sTableName ---- 表名
'iSQLType ----SQL语句类型:0-增加,1-更新,2-删除,3-查询
'sWhere ---- 条件
'sOrder ---- 排序方式
'sSQL ----值
Private sTableName,iSQLType,sWhere,sOrder,sSQL
'************************************
'类初始化/结束
'************************************
Private Sub Class_Initialize()
sTableName=""
iSQLType=0
sWhere=""
sOrder=""
sSQL=""
End Sub
Private Sub Class_Terminate()
End Sub
'************************************
'属性
'************************************
'设置表名的属性
Public Property Let TableName(value)
sTableName=value
End Property
'设置条件
Public Property Let Where(value)
sWhere=value
End Property
'设置排序方式
Public Property Let Order(value)
sOrder=value
End Property
'设置查询语句的类型
Public property Let SQLType(value)
iSQLType=value
Select case iSQLType
Case 0
sSQL="insert into {#0} ({#1}) values ({#2})"
Case 1
sSQL="update {#0} set {#1}={#2}"
Case 2
sSQL="delete from {#0} "
Case 3
sSQL="select {#1} from {#0} "
End Select
End Property
'************************************
'函数
'************************************
'增加字段(字段名称,字段值)
Public Sub AddField(sFieldName,sValue)
Select Case iSQLType
Case 0
sSQL=replace(sSQL,"{#1}",sFieldName & ",{#1}")
sSQL=replace(sSQL,"{#2}","'" & sValue & "',{#2}")
Case 1
sSQL=replace(sSQL,"{#1}",sFieldName)
sSQL=replace(sSQL,"{#2}","'" & sValue & "',{#1}={#2}")
Case 3
sSQL=replace(sSQL,"{#1}",sFieldName & ",{#1}")
End Select
End Sub
'返回SQL语句
Public Function ReturnSQL()
sSQL=replace(sSQL,"{#0}",sTableName)
Select Case iSQLType
Case 0
sSQL=replace(sSQL,",{#1}","")
sSQL=replace(sSQL,",{#2}","")
Case 1
sSQL=replace(sSQL,",{#1}={#2}","")
Case 3
sSQL=replace(sSQL,",{#1}","")
End Select
If sWhere<>"" Then
sSQL=sSQL & " where " & sWhere
End If
If sOrder<>"" Then
sSQL=sSQL & " order by " & sOrder
End If
ReturnSQL=sSQL
End Function
'清空语句
Public Sub Clear()
sTableName=""
iSQLType=0
sWhere=""
sOrder=""
sSQL=""
End Sub
End Class
%>
忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整