[原創] EasyASP v1.5簡化ASP開發,包含資料庫操作類
來源:互聯網
上載者:User
EasyASP v1.5簡化ASP開發,包含資料庫操作類
EasyASP是一個方便快速開發ASP的類,其中包含了一個資料庫控制類(原clsDbCtrl.asp,對原代碼作了最佳化和修改,包含對資料庫的各類操作及預存程序的調用,全部封裝在Easp.db中,使用起來會更方便,調用也更簡單)。而Easp類中提供了大量實用的ASP通用過程及方法,可以簡化大部分的ASP操作。目前只提供了VBScript版,JScript版將來可能會提供。詳細說明請下載協助手冊,裡面有非常詳細的使用方法說明及源碼範例。
源碼下載:http://easyasp.googlecode.com/files/EasyASP.v1.5.rar
協助手冊下載:http://easyasp.googlecode.com/files/EasyASP.v1.5.Manual.rar
後續更新請關註:http://easyasp.googlecode.com
=================================================================
EasyASP v1.5 (2008-10-22更新)
新增功能:
1、將資料庫控制類(原clsDbCtrl.asp)封裝入Easp類,均通過Easp.db調用,也可獨立使用。
2、新增MSSQL預存程序調用方法,可靈活調用預存程序並返回傳回值、記錄集及出參。
3、新增db.CreatConn方法,可以根據自訂的連接字串串連資料庫。
4、新增db.Json方法,可以將資料庫記錄集按Json格式輸出。
5、新增db.Rand和db.RandStr方法,可以產生一個不重複的隨機數或者隨機字串
6、新增資料庫操作各方法的簡寫方法,更節約書寫代碼時間。
7、在Easp類中新增大量的實用方法,如安全擷取值、防Sql注入、伺服器端表單驗證等。
其它更新:
1、最佳化db.AutoId自動擷取編號,效率提高20倍以上,資料量越大越明顯。
2、修改db.OpenConn資料庫連接方法,更符合日常描述習慣。
3、修改db.GetRecord取記錄集方法,參數更少。修正條件使用數組報錯的Bug。
4、修改並最佳化db.DeleteRecord刪除記錄方法,目前只有兩個參數了。
5、修改了錯誤調試方法,增加Debug全域屬性控制錯誤顯示。
更新說明:
以前寫了一個clsDbCtrl.asp資料庫控制類,收到一些反饋,還有朋友發來郵件告訴我一些改進的方法,很感謝他們。而我在原帖的跟帖中看到一條留言說“有記參數的時間,SQL語句早都寫完了”,更是直接指出了其中的尷尬,的確,儘管VBS沒有arguments屬性,但用太多的參數也不是個好主意。所以我花了些時間把這個類的許多代碼都重寫了一下,在保證功能只能更強不能更弱的前提下,一個方法最多隻有3個參數了。另外新增加了一個調用MSSQL預存程序的方法,可以靈活的調用預存程序並根據需要返回一個或多個記錄集、輸出參數及傳回值,當然,吸取教訓了,這個方法只有兩個參數。現在都封裝在這個新的名叫EasyASP的傢伙中了,顧名思義,無非是想一切都簡單點。
另外還有一個更尷尬的,那就是VBScript並不是物件導向的語言,所以這個類其實說穿了也只是一些過程和方法的封裝,方便使用而已,所以其中大部分的方法和過程都可以提出來單獨使用。當然,如果有需要,也可以把它封裝成wsc或者dll組件使用。
=================================================================
使用說明
=================================================================
1、使用方法:
(1) Easp類的所有調用都已包含在easp.asp中,所以只需要在頁首引入該檔案,如:
QUOTE:<!--#include file="inc/easp/easp.asp" -->
或:
QUOTE:<!--#include virtual="/inc/easp/easp.asp"-->
(2) 該類已經執行個體化,無需再單獨執行個體化,直接使用Easp.首碼調用即可,如:
QUOTE:Easp.wn("Test String") 或 Easp.db.AutoId("Table:ID")
(3) 如要同時操作多個資料庫,請執行個體化新的easpdb對象,如:
QUOTE:Dim db2 : Set db2 = New EasyASP_db
db2.dbConn = db2.OpenConn(0,dbase,server)
2、參數約定:
(1) 數組參數:由於VBScript沒有arguments屬性,不能使用動態參數,所以,在本類涉及到資料庫資料的代碼中,使用了Array(數組)來達到這一效果。本類中的部分參數可以使用數組(參數說明中有註明),但使用數組時應參照以下格式:
QUOTE:Array("Field1:Value1", "Field2:True", "Field3:100")
對,有點像json的格式,如果涉及到變數,那就這樣:
QUOTE:Array("Field1:" & Value1, "Field2:" & Value2, "Field3:" & Value3)
可以這樣說,本類中的幾乎所有與資料庫欄位相關的內容都可以用以上的數組格式來設定條件或者是擷取內容,包括調用預存程序要傳遞的參數。而這個類裡最大的優點就是在使用時不用去考慮欄位的類型,在欄位後跟一個冒號,接著跟上相應的值就行了。如果你經常手寫ASP程式的話,你很快就會感受到運用這種方式的魅力,除了資料類型不用考慮之外,它也很方便隨時添加和刪除條件。這裡舉個例子說明這個用法:
比如添加新記錄的方法:
QUOTE: Easp.db.AddRecord "Table", Array("FieldsA:測試資料","FieldsB:"&Now(),"FieldsC:True")
參數只有兩個,一個是表名,另一個就是這樣的數組參數。如果要改變資料庫結構,則修改上面的程式碼就非常簡單了。
(2) 共用參數(用特殊符號分隔): 也是考慮到要盡量減少參數,如果有些參數在很多時候都可以沒有的話,那就沒有必要專門為它增加一個參數。在本類裡採用了特殊符號如冒號(:)分隔一個參數中的多個值來達到傳遞多個參數的效果。舉幾個例子說明一下,同時也可以預覽一下採用本類的一些優勢:
比如建立MSSQL資料庫連接對象的方法:
QUOTE: Set Conn = Easp.db.Open(0,"Database","User:Password@ServerAddress")
很一目瞭然對不對,這裡就用:和@分隔了幾個參數而放在同一個參數裡了。另外如果是Access資料庫有密碼則在第3個參數中輸入就行了,沒有其它參數了。
再比如擷取記錄集的方法:
QUOTE:Set rs = Easp.db.GetRecord("Table:FieldsA,FieldsB,FieldsC:20","ID > 10","ID Desc")
其中第1個參數中包含了表名,要取的欄位和要取的記錄數,因為欄位和記錄數很多時候是可以省略的,所以俺索性把參數也省略了,這樣要記的參數要少很多滴。
再比如本類裡有一個GetUrl()的擷取本頁面地址的方法,很多地方都見過是吧,但是本類裡這個方法帶一個參數,通過這個參數可以取得很多結果,看例子:
比如本頁面的實際地址為:
QUOTE:http://www.domain.com/news/index.asp?type=public&feed=on&page=23
接下來是使用不同參數返回的結果:
QUOTE: 方法 返回結果
GetUrl("") http://www.domain.com/news/index.asp?type=public&feed=on&page=23
GetUrl(0) /news/index.asp
GetUrl(1) /news/index.asp?type=public&feed=on&page=23
GetUrl("page") /news/index.asp?page=23
GetUrl("-page") /news/index.asp?type=public&feed=on
GetUrl(":") /news/?type=public&feed=on&page=23
GetUrl(":-feed,-page") /news/?type=public
無需更多說明了吧,呵呵。本類中靈活使用共用參數的地方還有很多,這也是EasyASP的一大特色,大家自己看手冊吧。
3、方法和屬性概覽:
(1) 資料庫操作:
屬性:
Easp.db.dbConn (讀寫) 設定和擷取當前資料庫連接對象
Easp.db.DatabaseType (唯讀) 查詢當前使用的資料庫類型
Easp.db.Debug (讀寫) 設定和查詢錯誤調試開關
Easp.db.dbErr (唯讀) 查詢錯誤資訊
方法:
Easp.db.OpenConn 根據模板建立資料庫連接對象
Easp.db.CreatConn 根據自訂字串建立資料庫連接對象
Easp.db.AutoID 根據表名擷取自動編號
Easp.db.GetRecord 根據條件擷取記錄集
Easp.db.wGetRecord 輸出擷取記錄集的SQL語句
Easp.db.GetRecordBySQL 根據自訂SQL語句擷取記錄集
Easp.db.GetRecordDetail 擷取某一記錄的詳細資料
Easp.db.AddRecord 添加一條新的記錄
Easp.db.wAddRecord 輸出添加新記錄的SQL語句
Easp.db.UpdateRecord 根據條件更新記錄
Easp.db.wUpdateRecord 輸出更新記錄的SQL語句
Easp.db.DeleteRecord 根據條件刪除記錄
Easp.db.wDeleteRecord 輸出刪除記錄的SQL語句
Easp.db.ReadTable 根據條件擷取指定欄位資料
Easp.db.Json 根據記錄集產生Json格式資料
Easp.db.doSP 調用一個預存程序並返回多種資料
Easp.db.Rand 產生一個不重複的隨機數
Easp.db.RandStr 產生一個不重複的隨機字串
Easp.db.C 關閉記錄集並釋放資源
(2) 字串處理:
Easp.w 輸出字串
Easp.wn 輸出字串和一個HTML換行("<br/>")
Easp.we 輸出字串並終止程式
Easp.isN 判斷字串是否為空白值
Easp.js 輸出JavaScript代碼
Easp.alert 彈出js訊息框並返回上頁
Easp.alertUrl 彈出js訊息框並跳轉到新頁
Easp.jsEncode 轉換字串為安全的JavaScript字串
Easp.CutString 截取字串並以自訂符號代替被截部分
Easp.HtmlEncode HTML加碼函數
Easp.HtmlDecode HTML解碼函數
Easp.HtmlFilter 過濾HTML標籤
Easp.RandStr 產生指定長度的隨機字串
Easp.R 擷取Request值並轉換為SQL安全字串
Easp.Ra 安全擷取Request值並在錯誤時彈出js訊息框
Easp.Test 根據Regex驗證資料合法性
(3) 時間日期處理:
Easp.DateTime 格式化時間日期
Easp.DiffHour 返回一個日期時間變數和現在相比相差的小時數
Easp.DiffDay 返回一個日期時間變數和現在相比相差的天數
Easp.GetScriptTime 根據時間戳記返回精確到毫秒的指令碼執行時間
(4) 數文書處理:
Easp.Rand 產生一個隨機數
Easp.toNumber 轉換數字為指定小數位元的格式
Easp.toPrice 轉換數字為貨幣格式
Easp.toPercent 轉換數字為百分比格式
(5) Cookie及Application處理:
Easp.SetCookie 設定一個Cookies值
Easp.GetCookie 擷取一個Cookies值
Easp.RemoveCookie 刪除一個Cookies值
Easp.SetApp 設定一個Application值
Easp.GetApp 擷取一個Application值
Easp.RemoveApp 刪除一個Application值
(6) 其它:
Easp.IfThen 判斷三元運算式
Easp.rr 伺服器端跳轉頁面
Easp.GetUrl 擷取當前頁面的URI地址
Easp.GetIP 擷取訪問者IP
Easp.noCache 設定頁面不緩衝
Easp.close 關閉對象並釋放資源
Easp.CheckForm 伺服器端表單驗證不合法彈出js訊息框
Easp.CheckDataFrom 驗證提交資料來源
Easp.CheckDataFromA 驗證資料來源不合法則彈出js訊息框
Easp.CheckSql 防SQL注入強驗證
Easp.CheckSqlA 防SQL注入強驗證不合法則彈出js訊息框