⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 db_old.inc

📁 物业管理和办公自动化系统
💻 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 + -