資料|資料庫 ASP的資料庫類
一、前言
提到ASP操作資料庫,大多數人會想到:共用的串連字串ConStr、Conn.Open ConStr建立資料庫連接、Conn.Execute SqlCmd方式執行命令、RecordSet.Open Sql,Conn,1,1取得記錄集,的確這種方法被99%的人或公司採用。對於操作資料庫過程中產生的錯誤,恐怕99%的人不會進行處理,要麼在程式的開頭加入on error resume next“輕鬆”跳過去、要麼讓錯誤資訊連同錯誤碼一同“暴屍”在瀏覽者面前。對於前一種情況可能會產生讓人莫明其妙的怪異結果,後一種情況,可能會在某個時間(比如串連資料庫時)暴露您的敏感資訊,影響網站安全。當然,還是有個別負責的程式員同志會在容易產生錯誤的操作後面加入if err.xxxx來處理可能的錯誤,但這似乎不是一個好辦法,一不小心就可能漏掉了。
我至今也沒有想明白,為什麼在VB和ASP.NET中都存在的On Error Goto,偏偏在ASP中被取消了。
另外不得不提的是,當您在前面使用on error resume next而在後面不想resume next了,對不起,沒辦法,您只能把它“貫徹到底”。看看其它語言的異常機制,try..catch..finally隨心所欲,真是爽酷了!
說了這麼多,並不要為ASP引入諸如異常機制等新的內容,畢竟ASP語言本身也決定這是不可能實現的(ASP.NET中實現了),只是想在ASP中最普遍的也是最容易出現錯誤的資料庫操作中,找到一種有效錯誤處理方式,並把conn、RecordSet等封裝起來,達到最大限度的精簡。於是便有了下面的資料庫類。
二、資料庫類
1、功能
正如前面所說,這個類的目的是把ADODB.Connection、Adodb.Recordset等煩瑣的操作封裝起來並在類裡實現錯誤處理。現在看看類的成員、屬性和方法:
1)成員:(沒有公有或保護成員)
2)屬性:
ClassName-返回類名
Version-返回版本
LastError-返回最後的錯誤
IgnoreError-設定/返回是否忽略資料庫錯誤
Connection-返回連線物件(ADODB.Connection)
ConnectionString-設定/返回串連字串(本樣本為SQL Server,如為其它請根據實際設定)
FieldCount、PageSize、PageCount、AbsolutePage、AbsolutePosition、Bof、Eof-請參考Adodb.Recordset相應內容
3)方法:
Setup-設定串連資料服務器的帳號、密碼、資料庫名、主機/IP
Connect-串連資料庫
Close-關閉資料庫連接並釋放資源
Query-執行資料庫查詢命令並返回資料集
ExeSQL-執行SQL命令(不返回資料庫)
FieldName-返回指定序號的欄位名
Fields-返回指定的(序號或欄位名)欄位的值
Data-同上
MoveNext、MovePrevious、MoveFirst、MoveLast-請參考Adodb.Recordset相應內容
2、實現代碼(DBSql.inc.asp)
內容太長,點擊此處開啟/摺疊...
<%
'=======================================================================
' CLASS NAME: clsDB
' DESIGN BY : 彭國輝
' DATE: 2003-12-18
' SITE: http://kacarton.yeah.net/
' EMAIL: kacarton@sohu.com
' MODIFY:
' 2004-6-25: 升級後的資料引擎,返回錯誤代號小於0(也可以是ASP對數值的
' 定義有變),修改錯誤偵測err.number>0 ==> err.number<>0
' 2004-6-30:修改錯誤處理,忽略如遊標類型改變等非錯誤性質的提示
'=======================================================================
Class clsDB
' name of this class
' var string
' @access Private
' @see property: Name
Private m_strName
' version of this class
' var string
' @access Private
' @see property: Version
Private m_strVersion
' Error Object
' @var ADODB.Connection.Errors
' @access private
' @see property: LastError
Private m_LastError
' Ingore all Connection.Errors
' var Boolean
' @access private
' @see property: IgnoreError
Private m_IgnoreError
' Connection Object
' var ADODB.Connection
' @access Private
' @see property: Connection
Private m_Connection
' Is connection to database?
' var boolean
' @Private
Private m_bIsConnect
' RecordSet
' var RecordSet
' @access Private
Private m_RecordSet
' Connection string
' var string
' @access Private
' @see property: ConnectionString
Private m_ConneStr
' Database server host name or IP
' var string
' @access Private
' @see property: Host
Private m_strHost
' Database name
' var string
' @access Private
' @see property: Database
Private m_strDatabase
' Account to connection database
' var string
' @access Private
' @see property: UserName
Private m_UserName
' Password to connection database
' var string
' @access Private
' @see property: Password
Private m_Password
' get class name attribute.
' usage: oTemplate.Name
' access public
Public Property Get ClassName()
ClassName = m_strName
End Property
' get class version attribute.
' usage: oTemplate.Version
' access public
Public Property Get Version()
Version = m_strVersion
End Property
' Get class last error messages.
' usage: oTemplate.LastError
' @access public
Public Property Get LastError()
LastError = m_LastError
End Property
' Get or Set Ignore connection.errors
Public Property Get IgnoreError()
IgnoreError = m_IgnoreError
End Property
Public Pro