欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

解讀提高M(jìn)SSQL和ACCESS兼容性的方法_ASP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:解析ASP隱藏下載地址及防盜代碼
以下為引用的內(nèi)容:

眾所周知,ASP當(dāng)中,最常用到的是ACCESS和MSSQL兩個(gè)數(shù)據(jù)庫。很多程序都想開發(fā)成兩個(gè)數(shù)據(jù)庫都可以使用的模式,但是礙于兩個(gè)數(shù)據(jù)庫得一些SQL語句不一致,所以導(dǎo)致很多程序都分兩個(gè)沒有必要的版本,就是ACCESS和MSSQL版!而事實(shí)上,我們可以通過對代碼判斷和識(shí)別,控制整個(gè)程序的兼容性。也就是說,將兩個(gè)版本兼容成一個(gè)系統(tǒng)。例如我的ASP飛云小說系統(tǒng),就是兩種數(shù)據(jù)庫都可以運(yùn)作的程序。

那么,到底如何讓程序存在數(shù)據(jù)庫兼容性并且得到高效的運(yùn)作呢。下邊我將以我的飛云小說系統(tǒng)做范例,說說我的一些控制方法和代碼。

首先,我們要控制一個(gè)參數(shù),讓程序知道我們現(xiàn)在運(yùn)作的是什么數(shù)據(jù)庫。

如:飛云小說程序中的Config.asp文件參數(shù)

以下為引用的內(nèi)容:
Const SystemDatabaseType = "ACCESS"      '系統(tǒng)數(shù)據(jù)庫類型,"SQL"為MSSQL 2000/2005數(shù)據(jù)庫,"ACCESS"為MS ACCESS 2000數(shù)據(jù)庫

這是兼容性開始的基礎(chǔ),是整個(gè)程序數(shù)據(jù)庫的判別。所以是非常有必要設(shè)置這么一個(gè)參數(shù)的。

第二,數(shù)據(jù)庫連接方式和常用函數(shù)的區(qū)分

在我的程序當(dāng)中,Conn.asp里邊還存在下邊的一段代碼:

代碼:

If SystemDatabaseType = "SQL" Then
        ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlHostIP & ";"
        FY_True = "1"
        FY_False = "0"
        FY_Now = "GetDate()"
        FY_OrderType = " desc"
        FY_DatePart_D = "d"
        FY_DatePart_Y = "yyyy"
        FY_DatePart_M = "m"
        FY_DatePart_W = "ww"
        FY_DatePart_H = "hh"
Else   
        ConnStr= "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(mdb)
        FY_True = "True"
        FY_False = "False"
        FY_Now = "Now()"
        FY_OrderType = " asc"
        FY_DatePart_D = "'d'"
        FY_DatePart_Y = "'yyyy'"
        FY_DatePart_M = "'m'"
        FY_DatePart_W = "'ww'"
        FY_DatePart_H = "'h'"
End If
 

這個(gè)代碼,除了區(qū)別數(shù)據(jù)庫連接方式之后,還將MSSQL和ACCESS常用的語句進(jìn)行變量賦值。這樣做的好處就是后面使用相關(guān)內(nèi)容的時(shí)候可以直接使用調(diào)用變量的方法,而不再需要進(jìn)行數(shù)據(jù)庫類型的判斷。

例如對比時(shí)間的datediff函數(shù)問題上:

代碼:
"Select * From [表] where datediff('"&FY_DatePart_D&",數(shù)據(jù)庫時(shí)間,'變量名)=0 Order By id Desc"

這樣就免去了數(shù)據(jù)庫的判別,減少了代碼量和實(shí)用性。

第三,正確使用兼容性代碼,而不使用特色代碼。

很多人在寫MSSQL數(shù)據(jù)庫的是很,都很喜歡使用conn.execute語句,而不使用open方式。雖然在速度上,很多時(shí)間conn.execute會(huì)比open方式要高速度一點(diǎn)。但是這不是一概而論的。

比如說,在一個(gè)判斷是否已經(jīng)存在的過程算法當(dāng)中。如果你已經(jīng)使用了open進(jìn)行了BOF或EOF的判斷,那么你還要使用conn.execute進(jìn)行判斷的話,那速度,肯定是不如在OPEN直接修改的好。

而且,在代碼當(dāng)中open方式的兼容性,遠(yuǎn)遠(yuǎn)要高過conn.execute。例如時(shí)間函數(shù)now()的使用上.(這個(gè)函數(shù)在ACCESS和MSSQL的區(qū)別,大家自己去百度)

第四,在追求兼容性的情況下,犧牲一點(diǎn)效率也是必要的。

第三點(diǎn)當(dāng)中,如果你的過程不需要判斷是否存在,就是在沒有打開OPEN的情況下的話。你可以使用conn.execute。但是我的不是一概而論的。比如說,如果是一個(gè)比較少用到,不是頻繁讀取的過程。我會(huì)選擇使用OPEN方式,而不使用conn.execute方式。

雖然這過程的速度會(huì)降低。可是這不影響到我的使用,所以我還是選擇OPEN方式。原因很簡單,就是兼容性的選擇。

最后,在必要的時(shí)候放棄兼容性的追求,采用不同數(shù)據(jù)庫不同代碼。

前面第一點(diǎn),我們對代碼已經(jīng)做了一個(gè)設(shè)置,就是數(shù)據(jù)庫類型的設(shè)置。那么當(dāng)我們遇到一些不能通過兼容性解決,或者是像conn.execute和OPEN方式上的追求的時(shí)候。我們可以利用前面SystemDatabaseType的參數(shù)設(shè)置進(jìn)行判斷,然后相應(yīng)使用不同的代碼。

如:
If SystemDatabaseType = "SQL" Then
'MSSQL數(shù)據(jù)庫時(shí)使用的代碼

Else   
'ACCESS數(shù)據(jù)庫時(shí)使用的代碼

End If

這樣就可以保證程序的高效性以及穩(wěn)定性。這也是整個(gè)程序的兼容性的一種。

 

分享:怎樣配置IIS既可以運(yùn)行ASP又可以運(yùn)行PHP
整了個(gè)BaiDuMp3的Decode,Base64加上一些Unicode的變化,發(fā)現(xiàn)JS版和ASP版的Base64算法對中文支持都不理想,于是用了Php的,服務(wù)器是IIS6.0,要讓它跑Php也是可以的 。 1、準(zhǔn)備好php.ini,php5ts.dll,php5isapi.dll這3個(gè)文件,其中的php5是你擁有的php版本的

來源:模板無憂//所屬分類:ASP教程/更新時(shí)間:2009-12-08
相關(guān)ASP教程