MSSQL和ACCESS兼容性提高方法
2012/7/20 15:47:19
    首先,我們要控制一個參數,讓程序知道我們現在運作的是什么數據庫。
    以下為引用的內容:
    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
    這樣就可以保證程序的高效性以及穩定性。這也是整個程序的兼容性的一種。

返回列表
返回首頁 主站蜘蛛池模板: 777丰满影院| 亚洲一区日韩一区欧美一区a| 菠萝蜜视频网在线www| 国产精品欧美一区二区三区不卡| 国产精品久久久久aaaa| 亚洲一久久久久久久久| 热久久精品免费视频| 另类欧美视频二区| 69视频在线观看| 婷婷激情五月网| 亚洲AV色香蕉一区二区三区蜜桃 | аⅴ资源中文在线天堂| 无码人妻精品丰满熟妇区| 亚洲精品中文字幕无码AV| 精品久久久久久国产潘金莲 | 国产91免费在线观看| 国产精品日本一区二区不卡视频| 99视频在线观看免费| 好男人好影视在线观看视频| 中文字幕一区二区三区久久网站 | 男女一边摸一边脱视频网站| 国产无套露脸大学生视频| 91免费国产在线观看| 天天做天天摸天天爽天天爱| 三级韩国一区久久二区综合| 无遮挡动漫画在线观看| 久久成人无码国产免费播放| 最近2019免费中文字幕视频三| 亚洲国产精品xo在线观看| 波多野结衣大战欧美黑人| 免费jjzz在在线播放国产| 精品人妻一区二区三区四区在线| 啊灬啊灬啊灬快灬性| 老师小sao货水好多真紧h视频| 国产乱码精品一区二区三区四川人| 国产成人精品怡红院| 国产真**女人特级毛片| 18末成年禁止观看试看一分钟| 成人女人a毛片在线看| 久久久不卡国产精品一区二区 | 中文字幕亚洲日韩无线码|