📄 db.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 ' 数据库连接对象
Private m_DSN ' ODBC数据源名称Data Source Name
Private m_sUserName ' 连接使用的用户名
Private m_sPassword ' 连接使用的用户密码
'************************************************************************************************
' 函数名 : 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_DSN = "infortower"
m_sUserName = "infor"
m_sPassword = "tower"
m_DBConn.open m_DSN, m_sUserName, m_sPassword
Case dbControl
'TODO: 连接到中控室数据库
Case dbParking
'TODO: 连接到停车场收费管理系统数据库
Case Else
m_DSN = "infortower"
m_sUserName = "infor"
m_sPassword = "tower"
m_DBConn.open m_DSN, m_sUserName, m_sPassword
End Select
'DebugStr("Connected to Database...")
'' 出错信息,如果出错,则显示出错信息,并不继续往下作了
' dim sError : sError = ProcessError
' if sError <> "" then
' 'Response.Clear
' Response.Write("数据库连接出错,参考信息如下:<br>" & vbLF & _
' "连接信息:<span style=""color:blue;font-size:9pt"">数据源名称:" & m_DSN & ",用户名:" & m_sUserName & ",密码:" & m_sPassword & "</span><br>" & _
' "出错信息:<span style=""color:red;font-size:9pt"">" & sError & "</span><br>" & _
' "解决办法:<span style=""color:blue;font-size:9pt"">请仔细检查连接信息是否正确,测试一下ODBC的配置!</span><br>" & _
' "目前连接数据库老是会出现以下错误,<span style=""color:gray;font-size:9pt;font-weight:600"">[Microsoft][ODBC SQL Server Driver][SQL Server]已将数据库上下文改为“InforTower”。 (Microsoft OLE DB Provider for ODBC Drivers)</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 m_sql ' SQL 语句
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)
on error resume next
m_sql = sql
m_CDBConn.Connect(db)
m_Recordset.CursorLocation = adUseServer
' response.end
m_Recordset.Open sql, m_CDBConn.m_DBConn, adOpenForwardOnly, adLockReadOnly, adCmdText
'' 出错信息,如果出错,则显示出错信息,并不继续往下作了
' dim sError : sError = ProcessError
' if sError <> "" then
' 'Response.Clear
' Response.Write("打开数据库记录集时出错,参考信息如下:<br>" & _
' "SQL语句:<span style=""color:blue;font-size:9pt"">" & sql & "</span><br>" & _
' "出错信息:<span style=""color:red;font-size:9pt"">" & sError & "</span><br>" & _
' "解决办法:<span style=""color:blue;font-size:9pt"">请仔细检查SQL语句是否正确,可以到SQL查询分析器中测试一把!</span><br>" & _
' "<br>" & _
' "该错误可能是直接调用CRecordset中的Open函数出错,也可能是调用DLookUp或SelectOptions时间接调用CRecordset的Open函数导致出错,请首先确定是哪一种情况,直接调用的应该比较容易检查出错误,如果是调用DLookUp或SelectOptions导致的出错,仔细检查表名、字段名、条件等等,如果实在检查不出,只好找周秋舫了,她会不遗余力地帮助你!")
' Response.end
' end if
Set Open = m_Recordset
on error goto 0
End Function
'************************************************************************************************
' 函数名 : OpenStaticRS
' 输 入 : sSQL ---- SQL 语句
' 输 出 : SQL查询语句返回的数据库记录集Recordset
' 功能描述: 创建static only recordset
' 调用模块:
' 作 者 : 周秋舫
' 日 期 : 2002-05-09
' 版 本 :
'************************************************************************************************
Public Function OpenStatic(db, sql)
on error resume next
m_sql = sql
m_CDBConn.Connect(db)
m_Recordset.CursorLocation = adUseServer
m_Recordset.Open sql, m_CDBConn.m_DBConn, adOpenStatic, adLockReadOnly, adCmdText
Set OpenStatic = m_Recordset
'' 出错信息,如果出错,则显示出错信息,并不继续往下作了
dim sError : sError = ProcessError
if sError <> "" then
'Response.Clear
Response.Write("打开数据库记录集时出错,参考信息如下:<br>" & vbLF & _
"SQL语句:<span style=""color:blue;font-size:9pt"">" & m_sql & "</span><br>" & _
"出错信息:<span style=""color:red;font-size:9pt"">" & sError & "</span><br>" & _
"解决办法:<span style=""color:blue;font-size:9pt"">请仔细检查SQL语句是否正确,可以到SQL查询分析器中测试一把!</span><br>")
Response.end
end if
on error goto 0
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -