直播中
一旦創(chuàng)建了SQL 語句,你還得設(shè)法訪問其查詢結(jié)果。顯然,這里的關(guān)鍵就是ASP recordset。在使用非SQL的recordset時(shí),創(chuàng)建recordset的代碼通常如下所示:
Dim objRec
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open "customers", objConn, 0, 1, 2
如果你對(duì)ASP比較熟悉以上的代碼對(duì)你可就不陌生了,你應(yīng)該知道“customers”表示你打開數(shù)據(jù)庫內(nèi)一個(gè)數(shù)據(jù)表的名字。
打開recordset
為了充分利用你更為熟悉的SQL技能,你需要調(diào)整常規(guī)ASP網(wǎng)頁上最常采用的recordset:
Dim objRec
Set objRec = Server.CreateObject ("ADODB.Recordset")
objRec.Open SQL, objConn, 0, 1, 2
這里唯一的修改就是在objRec.Open,之后用包含SQL語句的變量代替了要查詢的數(shù)據(jù)表的名稱。
這種方法的優(yōu)點(diǎn)之一是你可以指定游標(biāo)類型(如以上0, 1 ,2 所示)。
執(zhí)行SQL
你可以用緊湊的一行代碼執(zhí)行SQL語句來創(chuàng)建recordset。以下是語法:
Dim objRec
set objRec = objConn.Execute(SQL)
在上例中,你所看到的SQL是你存放自己SQL SELECT 語句的變量。該代碼行“運(yùn)行”SQL語句(或者說對(duì)數(shù)據(jù)庫進(jìn)行查詢),選取數(shù)據(jù)并把數(shù)據(jù)存放在recordset 內(nèi),在上例中就是變量objRec。這種方法的主要缺點(diǎn)是你不能選擇自己想采用的游標(biāo)類型。相反,recordset總是用前向游標(biāo)打開。
因?yàn)橛螛?biāo)的緣故,你或許打算熟悉兩種創(chuàng)建recordset的方法。直接執(zhí)行查詢節(jié)省了鍵入字符所消耗的時(shí)間,但那樣的話你就得采用默認(rèn)的游標(biāo)了,這樣有可能遭遇經(jīng)常不能正常運(yùn)行的毛病。不管你具體采用哪種辦法,兩者之間的最大的差別也不外乎代碼精練與否。在不考慮你取得什么字段、你的標(biāo)準(zhǔn)是什么的前提下,也不管你如何存儲(chǔ)數(shù)據(jù),采用SQL式的recordset 在體積上會(huì)比ASP上打開的標(biāo)準(zhǔn)recordset 要小得多,更別提操作起來的簡易性了。畢竟,通過過濾數(shù)據(jù),你消除了耗費(fèi)時(shí)間的if-then 測(cè)試和可能用到的循環(huán)。
編寫測(cè)試用SQL
這里有個(gè)技巧,許多專業(yè)ASP程序員習(xí)慣在測(cè)試網(wǎng)頁的時(shí)候“編寫”自己的SQL語句。這樣做可以幫助你調(diào)試代碼,因?yàn)槟憧梢詮闹锌吹絺鬟f給服務(wù)器執(zhí)行的字符串。而你要做的無非是增加Response.WriteyourVariable 在屏幕上顯示有關(guān)信息。在你把和SQL有關(guān)的問題提交給ASP討論組的時(shí)候你就應(yīng)該附上這些信息。