大家都知道ASP當(dāng)中,最常用到的是ACCESS和MSSQL兩個(gè)數(shù)據(jù)庫(kù)。很多程序都想開(kāi)發(fā)成兩個(gè)數(shù)據(jù)庫(kù)都可以使用的模式,但是礙于兩個(gè)數(shù)據(jù)庫(kù)得一些SQL語(yǔ)句不一致,所以導(dǎo)致很多程序都分兩個(gè)沒(méi)有必要的版本,就是ACCESS和MSSQL版!而事實(shí)上,我們可以通過(guò)對(duì)代碼判斷和識(shí)別,控制整個(gè)程序的兼容性。也就是說(shuō),將兩個(gè)版本兼容成一個(gè)系統(tǒng)。例如我的ASP飛云小說(shuō)系統(tǒng),就是兩種數(shù)據(jù)庫(kù)都可以運(yùn)作的程序。
那么,到底如何讓程序存在數(shù)據(jù)庫(kù)兼容性并且得到高效的運(yùn)作呢。下邊我將以我的飛云小說(shuō)系統(tǒng)做范例,說(shuō)說(shuō)我的一些控制方法和代碼。
首先,我們要控制一個(gè)參數(shù),讓程序知道我們現(xiàn)在運(yùn)作的是什么數(shù)據(jù)庫(kù)。
如:飛云小說(shuō)程序中的Config.asp文件參數(shù)
| 以下為引用的內(nèi)容: Const SystemDatabaseType = "ACCESS" '系統(tǒng)數(shù)據(jù)庫(kù)類(lèi)型,"SQL"為MSSQL 2000/2005數(shù)據(jù)庫(kù),"ACCESS"為MS ACCESS 2000數(shù)據(jù)庫(kù) |
這是兼容性開(kāi)始的基礎(chǔ),是整個(gè)程序數(shù)據(jù)庫(kù)的判別。所以是非常有必要設(shè)置這么一個(gè)參數(shù)的。
第二,數(shù)據(jù)庫(kù)連接方式和常用函數(shù)的區(qū)分
在我的程序當(dāng)中,Conn.asp里邊還存在下邊的一段代碼:
|
代碼: If SystemDatabaseType = "SQL" Then |
這個(gè)代碼,除了區(qū)別數(shù)據(jù)庫(kù)連接方式之后,還將MSSQL和ACCESS常用的語(yǔ)句進(jìn)行變量賦值。這樣做的好處就是后面使用相關(guān)內(nèi)容的時(shí)候可以直接使用調(diào)用變量的方法,而不再需要進(jìn)行數(shù)據(jù)庫(kù)類(lèi)型的判斷。
例如對(duì)比時(shí)間的datediff函數(shù)問(wèn)題上:
| 代碼: "Select * From [表] where datediff('"&FY_DatePart_D&",數(shù)據(jù)庫(kù)時(shí)間,'變量名)=0 Order By id Desc" |
這樣就免去了數(shù)據(jù)庫(kù)的判別,減少了代碼量和實(shí)用性。
第三,正確使用兼容性代碼,而不使用特色代碼。
很多人在寫(xiě)MSSQL數(shù)據(jù)庫(kù)的是很,都很喜歡使用conn.execute語(yǔ)句,而不使用open方式。雖然在速度上,很多時(shí)間conn.execute會(huì)比open方式要高速度一點(diǎn)。但是這不是一概而論的。
比如說(shuō),在一個(gè)判斷是否已經(jīng)存在的過(guò)程算法當(dāng)中。如果你已經(jīng)使用了open進(jìn)行了BOF或EOF的判斷,那么你還要使用conn.execute進(jìn)行判斷的話,那速度,肯定是不如在OPEN直接修改的好。
而且,在代碼當(dāng)中open方式的兼容性,遠(yuǎn)遠(yuǎn)要高過(guò)conn.execute。例如時(shí)間函數(shù)now()的使用上.(這個(gè)函數(shù)在ACCESS和MSSQL的區(qū)別,大家自己去百度)
第四,在追求兼容性的情況下,犧牲一點(diǎn)效率也是必要的。
第三點(diǎn)當(dāng)中,如果你的過(guò)程不需要判斷是否存在,就是在沒(méi)有打開(kāi)OPEN的情況下的話。你可以使用conn.execute。但是我的不是一概而論的。比如說(shuō),如果是一個(gè)比較少用到,不是頻繁讀取的過(guò)程。我會(huì)選擇使用OPEN方式,而不使用conn.execute方式。
雖然這過(guò)程的速度會(huì)降低。可是這不影響到我的使用,所以我還是選擇OPEN方式。原因很簡(jiǎn)單,就是兼容性的選擇。
最后,在必要的時(shí)候放棄兼容性的追求,采用不同數(shù)據(jù)庫(kù)不同代碼。
前面第一點(diǎn),我們對(duì)代碼已經(jīng)做了一個(gè)設(shè)置,就是數(shù)據(jù)庫(kù)類(lèi)型的設(shè)置。那么當(dāng)我們遇到一些不能通過(guò)兼容性解決,或者是像conn.execute和OPEN方式上的追求的時(shí)候。我們可以利用前面SystemDatabaseType的參數(shù)設(shè)置進(jìn)行判斷,然后相應(yīng)使用不同的代碼。
|
如: Else End If |
這樣就可以保證程序的高效性以及穩(wěn)定性。這也是整個(gè)程序的兼容性的一種。
后編:
還是和上次的教程《如何購(gòu)買(mǎi)適合自己的商業(yè)程序版本》上PS課的時(shí)候?qū)懡坛蹋赂拢∫驗(yàn)闀r(shí)間比較短,可能有一些問(wèn)題沒(méi)有涉及到,或者過(guò)程有什么錯(cuò)誤的地方,希望大家評(píng)論指正。如果有興趣的朋友,可以到中國(guó)站長(zhǎng)站(Chinaz.com)或到我的網(wǎng)站 下載我的免費(fèi)版小說(shuō)程序,研究一下!
-

- 百度版deepseek回復(fù)-2025年百度如何優(yōu)化企業(yè)網(wǎng)站搜索排名
發(fā)布時(shí)間:2025-04-05
-

- 貴陽(yáng)網(wǎng)頁(yè)設(shè)計(jì)中flash如何運(yùn)用不影響貴陽(yáng)網(wǎng)站優(yōu)化
發(fā)布時(shí)間:2014-07-15
-

- 如何讓您的企業(yè)網(wǎng)站具有吸引力?
發(fā)布時(shí)間:2015-06-25
-

- 貴陽(yáng)市貴陽(yáng)網(wǎng)站優(yōu)化如何提高網(wǎng)站權(quán)重
發(fā)布時(shí)間:2015-06-25
-

- 貴陽(yáng)市網(wǎng)絡(luò)公司如何才能獲得良好的用戶(hù)延續(xù)性
發(fā)布時(shí)間:2015-06-25
-

- 貴陽(yáng)市貴陽(yáng)網(wǎng)站建設(shè)如何查看域名解析狀況
發(fā)布時(shí)間:2015-06-25
-

- 如何優(yōu)化網(wǎng)站關(guān)鍵詞
發(fā)布時(shí)間:2015-06-24
-

- 貴陽(yáng)網(wǎng)站優(yōu)化如何引導(dǎo)客戶(hù)看到那些比較重要的頁(yè)面
發(fā)布時(shí)間:2015-06-24
-

- 如何提高M(jìn)SSQL和ACCESS的兼容性
發(fā)布時(shí)間:2015-06-24

