📄 db_old.inc
字号:
<%
'************************************************************************************************
' 文件名: db.inc
' Copyright(c) 2001-2002 上海阿尔卡特网络支援系统有限公司
' 创建人 : 周秋舫
' 日 期 : 2002-05-08
' 修改历史:
' ****年**月**日 ****** 修改内容:**************************************************
' 描 述 :
' 类 CDBConnection ---- 连接和断开数据库,对用户透明
' 类 CRecordset ---- 打开和关闭数据库记录集
' 函数 ExecuteSQL ---- 执行SQL语句,成功返回空串,不成功返回错误信息
' 函数 ExecuteSP ---- 执行存储过程,返回存储过程执行结果
' 函数 DLookUp ---- 根据查询条件返回某个表中某个子段的值
' 函数 SelectOptions ---- 返回<option></option>对
' 版 本 :
'************************************************************************************************
%>
<!-- #include file="adovbs.inc" -->
<%
'************************************************************************************************
' 数据库信息有多个,如OA系统的SQL Server数据库,中控室数据库/停车场收费管理系统数据库等若干个数据库,
' 在连接数据库时,需要指明连接到哪个数据库
Const dbLocal = 0 ' OA系统本身提供的SQL Server数据库
Const dbControl = 1 ' 中央控制室数据库
Const dbParking = 2 ' 停车场收费管理系统数据库
'************************************************************************************************
Class CDBConnection
' 定义成员变量
Public m_DBConn ' 数据库连接对象
'************************************************************************************************
' 函数名 : Class_Initialize
' 输 入 : (无)
' 输 出 : (无)
' 功能描述: 初始化数据库连接对象
' 调用模块:
' 作 者 : 周秋舫
' 日 期 : 2002-05-09
' 版 本 :
'************************************************************************************************
Private Sub Class_Initialize
Set m_DBConn = Server.CreateObject("ADODB.Connection")
'DebugStr("DB Connection Initialized...")
End Sub
Private Sub Class_Terminate
'DebugStr("DB Connection Terminated...")
End Sub
'************************************************************************************************
' 函数名 : Connect
' 输 入 : db
' db ---- 指明连接到哪个数据库
' 输 出 : Connect,函数名作为返回值,类型为ADODB.Connection的数据库连接对象
' 功能描述: 获取数据库链接
' 调用模块:
' 作 者 : 周秋舫
' 日 期 : 2002-05-09
' 版 本 :
'************************************************************************************************
Public Sub Connect(db)
'on error resume next
Select Case db
Case dbLocal
m_DBConn.open "infortower", "infor", "tower"
Case dbControl
'TODO: 连接到中控室数据库
Case dbParking
'TODO: 连接到停车场收费管理系统数据库
Case Else
m_DBConn.open "infortower", "infor", "tower"
End Select
'DebugStr("Connected to Database...")
'dim sError : sError = ProcessError
'if sError <> "" then
' response.clear
' response.write "<span color=""red"">数据库连接过程中发生错误,错误信息如下:" & sError & "</span><br>"
' response.end
'end if
'on error goto 0
End Sub
'************************************************************************************************
' 函数名 : Disconnect
' 输 入 : (无)
' 输 出 : (无)
' 功能描述: 关闭数据库链接
' 调用模块:
' 作 者 : 周秋舫
' 日 期 : 2002-05-09
' 版 本 :
'************************************************************************************************
Public Sub Disconnect()
m_DBConn.Close()
Set m_DBConn = nothing ' 调用DBConn的Class_Terminate
'DebugStr("Disconnected from Database...")
End Sub
Public Function ProcessError()
if m_DBConn.Errors.Count > 0 then
ProcessError = m_DBConn.Errors(0).Description & " (" & m_DBConn.Errors(0).Source & ")"
elseif not (Err.Description = "") then
ProcessError = Err.Description
else
ProcessError = ""
end if
End Function
End Class
Class CRecordset
Private m_CDBConn ' 我的数据库连接对象
Public m_Recordset ' 真正的数据库记录集对象
Private Sub Class_Initialize
Set m_CDBConn = New CDBConnection
Set m_Recordset = Server.CreateObject("ADODB.Recordset")
'DebugStr("Recordset initialized...")
End Sub
Private Sub Class_Terminate
'DebugStr("Recordset Terminated...")
m_CDBConn.Disconnect() ' 调用CDBConnection的Disconnect函数
End Sub
'************************************************************************************************
' 函数名 : Openrs
' 输 入 : sSQL ---- SQL 语句
' 输 出 : SQL查询语句返回的数据库记录集Recordset
' 功能描述: 创建forward only recordset
' 调用模块:
' 作 者 : 周秋舫
' 日 期 : 2002-05-09
' 版 本 :
'************************************************************************************************
Public Function Open(db, sql)
m_CDBConn.Connect(db)
m_Recordset.CursorLocation = adUseServer
' response.write sql
' response.end
m_Recordset.Open sql, m_CDBConn.m_DBConn, adOpenForwardOnly, adLockReadOnly, adCmdText
Set Open = m_Recordset
End Function
'************************************************************************************************
' 函数名 : OpenStaticRS
' 输 入 : sSQL ---- SQL 语句
' 输 出 : SQL查询语句返回的数据库记录集Recordset
' 功能描述: 创建static only recordset
' 调用模块:
' 作 者 : 周秋舫
' 日 期 : 2002-05-09
' 版 本 :
'************************************************************************************************
Public Function OpenStatic(db, sql)
m_CDBConn.Connect(db)
m_Recordset.CursorLocation = adUseServer
m_Recordset.Open sql, m_CDBConn.m_DBConn, adOpenStatic, adLockReadOnly, adCmdText
Set OpenStatic = m_Recordset
End Function
'************************************************************************************************
' 函数名 : Close
' 输 入 :
' 输 出 : (无)
' 功能描述: 关闭数据库记录集,同时关闭数据库连接
' 调用模块:
' 作 者 : 周秋舫
' 日 期 : 2002-05-09
' 版 本 :
'************************************************************************************************
Public Sub Close()
m_Recordset.Close()
Set m_Recordset = nothing
'DebugStr("Recordset closed...")
End Sub
'************************************************************************************************
' 函数名 : GetValue
' 输 入 : (字段名)
' 输 出 : GetValue函数名作为返回值,类型为字符串
' 功能描述: 从Recordset的当前行中获取相应字段的值
' 调用模块:
' 作 者 : 周秋舫
' 日 期 : 2002-05-09
' 版 本 :
'************************************************************************************************
Public Function GetValue(sFieldName)
'on error resume next
Dim res
if m_Recordset is nothing then
GetValue = ""
elseif (not m_Recordset.EOF) and (sFieldName <> "") then
res = m_Recordset(sFieldName)
if isnull(res) then
res = ""
end if
if VarType(res) = vbBoolean then
if res then res = "1" else res = "0"
end if
GetValue = res
else
GetValue = ""
end if
'if err.Description <> "" then DebugStr("Error in function GetValue: " & err.Description)
'on error goto 0
End Function
'************************************************************************************************
' 函数名 : GetValueHTML
' 输 入 : (字段名)
' 输 出 : GetValueHTML函数名作为返回值,类型为字符串
' 功能描述: 从Recordset的当前行中获取相应字段的值,以HTML编码形式返回
' 调用模块:
' 作 者 : 周秋舫
' 日 期 : 2002-05-09
' 版 本 :
'************************************************************************************************
Public Function GetValueHTML(sFieldName)
GetValueHTML = ToHTML(GetValue(sFieldName))
End Function
End Class
'================================================================================================
' 以下为跟数据库有关的其它函数
'================================================================================================
'************************************************************************************************
' 函数名 : ExecuteSQL
' 输 入 : db ----- 指明连接到哪个数据库,整数类型
' sql ---- 要执行的SQL语句,字符串类型
' 输 出 : 成功返回空,错误返回错误信息
' 功能描述: 执行SQL语句,完成SQL语句所要的操作
' 调用模块:
' 作 者 : 周秋舫
' 日 期 : 2002-05-09
' 版 本 :
'************************************************************************************************
Function ExecuteSQL(db, sql)
ExecuteSQL = sql' : exit function
'on error resume next
Dim sError : sError = ""
Dim oCn : Set oCn = New CDBConnection
oCn.Connect(db)
oCn.m_DBConn.Execute(sql)
sError = oCn.ProcessError
oCn.Disconnect()
ExecuteSQL = sError '' 错误信息作为结果返回
'on error goto 0
End Function
'************************************************************************************************
' 函数名 : ExecuteSP
' 输 入 : db ----- 指明连接到哪个数据库,整数类型
' sql ---- 要执行的Stored Procedure,字符串类型
' 输 出 : ExecuteSP函数名作为返回值,即存储过程执行结果,类型为整数
' 功能描述: 执行Stored Procedure,完成相应的功能
' 调用模块:
' 作 者 : 周秋舫
' 日 期 : 2002-05-09
' 版 本 :
'************************************************************************************************
Function ExecuteSP(db, sql)
'on error resume next
dim sError, oCn, rs, iRtn
sError = ""
Set oCn = New CDBConnection
oCn.Connect(db)
set rs = oCn.m_DBConn.Execute(sql)
iRtn = rs("rtn_code")
oCn.Disconnect()
ExecuteSP = iRtn
'on error goto 0
End Function
'************************************************************************************************
' 函数名 : DLookUp
' 输 入 : db ---- 指明连接到哪个数据库
' Table ---- 表名,类型为字符串
' Field ---- 字段名,类型为字符串
' sWhere ---- 条件限定语句
' 输 出 : DLookUp函数名作为返回值,类型为字符串
' 功能描述: 根据限定条件从相应表中选取相应字段值
' 调用模块:
' 作 者 : 周秋舫
' 日 期 : 2002-05-09
' 版 本 :
'************************************************************************************************
Function DLookUp(db, Table, Field, sWhere)
'on error resume next
Dim Res, sSQL
if sWhere <> "" then
sSQL = "select " & Field & " as field1 from " & Table & " where " & sWhere
else
sSQL = "select " & Field & " as field1 from " & Table
end if
DebugStr(sSQL)
dim crs : set crs = New CRecordset
dim rs : set rs = crs.Open(db, sSQL)
Res = crs.GetValue("field1")
crs.Close()
if IsNull(Res) then Res = ""
DLookUp = Res
'if err.Description <> "" then DebugStr("Error in function DLookUp: " & err.Description)
'on error goto 0
End Function
'************************************************************************************************
' 函数名 : SelectOptions
' 输 入 : db ---- 指名连接到哪个数据库
' table ---- 表名,类型为字符串
' ValueField ---- 字段名,类型为字符串
' DisplayField ---- 字段名,类型为字符串
' DefaultValue ---- 缺省选中的值
' sWhere ---- 条件限定语句
' 输 出 : SelectOptions函数名作为返回值,类型为字符串"<option value='id值'>desp值</option>...."
' 功能描述: 根据限定条件从相应表中选取相应字段值
' 调用模块:
' 作 者 : 周秋舫
' 日 期 : 2002-05-09
' 版 本 :
'************************************************************************************************
Function SelectOptions(db, table, ValueField, DisplayField, DefaultValue, sWhere)
'on error resume next
' 定义临时存放函数返回值的内容的变量,并赋初值
Dim Res : Res = ""
' 构造SQL语句
Dim sSQL
if Trim(sWhere) = "" then ' 没有查询限制条件
sSQL = "select " & ValueField & ", " & DisplayField & " from " & table
else
sSQL = "select " & ValueField & ", " & DisplayField & " from " & table & " where " & sWhere
end if
' 获取数据库记录集
dim oRs, rs
Set oRs = New CRecordset
Set rs = oRs.Open(dbLocal, sSQL)
' 循环取数据,放入<option>对
Dim m_id, m_desp, m_default
m_default = DefaultValue
while not rs.EOF
m_id = oRs.GetValue(ValueField)
m_desp = oRs.GetValue(DisplayField)
' 对取出的每一条记录的值与缺省值比较,相同则选中
if UCase(CStr(m_id)) = UCase(CStr(m_default)) then
Res = Res & vbTab & "<option value=""" & m_id & """ selected>" & m_desp & "</option>" & VBLF
else
Res = Res & vbTab & "<option value=""" & m_id & """>" & m_desp & "</option>" & VBLF
end if
rs.MoveNext
wend
if Res = "" then Res = "<option value=""-1"">(无记录)</option>" & VBLF
SelectOptions = Res
' 断开数据库
oRs.Close()
'on error goto 0
end function
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -