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

📄 复件 db.inc

📁 物业管理和办公自动化系统
💻 INC
📖 第 1 页 / 共 2 页
字号:
<%
'************************************************************************************************
' 文件名: 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>")
				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
		if m_Recordset is nothing then
			GetValue = ""

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -