亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

如何提高MSSQL和ACCESS的兼容性

添加時間:2014-12-14 16:36:00  添加: 思海網絡 

大家都知道ASP當中,最常用到的是ACCESS和MSSQL兩個數據庫。很多程序都想開發成兩個數據庫都可以使用的模式,但是礙于兩個數據庫得一些SQL語句不一致,所以導致很多程序都分兩個沒有必要的版本,就是ACCESS和MSSQL版!而事實上,我們可以通過對代碼判斷和識別,控制整個程序的兼容性。

也就是說,將兩個版本兼容成一個系統。例如我的ASP飛云小說系統,就是兩種數據庫都可以運作的程序。

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

首先,我們要控制一個參數,讓程序知道我們現在運作的是什么數據庫。

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

以下為引用的內容:
Const SystemDatabaseType = "ACCESS"      '系統數據庫類型,"SQL"為MSSQL 2000/2005數據庫,"ACCESS"為MS ACCESS 2000數據庫

這是兼容性開始的基礎,是整個程序數據庫的判別。所以是非常有必要設置這么一個參數的。

第二,數據庫連接方式和常用函數的區分

在我的程序當中,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
 

這個代碼,除了區別數據庫連接方式之后,還將MSSQL和ACCESS常用的語句進行變量賦值。這樣做的好處就是后面使用相關內容的時候可以直接使用調用變量的方法,而不再需要進行數據庫類型的判斷。

例如對比時間的datediff函數問題上:

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

這樣就免去了數據庫的判別,減少了代碼量和實用性。

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

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

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

而且,在代碼當中open方式的兼容性,遠遠要高過conn.execute。例如時間函數now()的使用上.(這個函數在ACCESS和MSSQL的區別,大家自己去百度)

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

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

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

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

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

如:
If SystemDatabaseType = "SQL" Then
'MSSQL數據庫時使用的代碼

Else    
'ACCESS數據庫時使用的代碼

End If

這樣就可以保證程序的高效性以及穩定性。這也是整個程序的兼容性的一種。

關鍵字:MSSQL、ACCESS、兼容性、數據庫

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站