談ADO訪問(wèn)不同數(shù)據(jù)庫(kù)的差別

字號(hào):

Microsoft公司提供了統(tǒng)一的數(shù)據(jù)訪問(wèn)接口ActiveX Data Object,簡(jiǎn)稱ADO。但實(shí)際應(yīng)用編程中,訪問(wèn)不同的數(shù)據(jù)庫(kù),如Access、SQL Server或VFP,會(huì)存在一些“細(xì)微”差別,常常有這樣的情況,用ADO對(duì)象訪問(wèn)某一數(shù)據(jù)庫(kù)的程序都調(diào)試通過(guò)了,但用同樣的程序訪問(wèn)其他數(shù)據(jù)庫(kù)就存在這樣或那樣的問(wèn)題,反之也一樣。這種差別就筆者來(lái)看好像沒(méi)什么意義,因?yàn)槎际且粋€(gè)公司的產(chǎn)品;雖然這種差別不多,但要搞清它的來(lái)龍去脈,足以使用戶忙乎一陣子,a無(wú)端增加了用戶的負(fù)擔(dān)。下面,本文就談?wù)動(dòng)嘘P(guān)SELECT語(yǔ)句在訪問(wèn)不同數(shù)據(jù)庫(kù)方面的一些差別。
    在SQL Server、Access、VFP三個(gè)數(shù)據(jù)庫(kù)中分別有以下的這樣一個(gè)表名都為“Employee”的數(shù)據(jù)表。如圖1所示。
    圖1
    訪問(wèn)日期型字段的差別
    在大多數(shù)情況下用SELECT語(yǔ)句分別去訪問(wèn)這三個(gè)數(shù)據(jù)庫(kù)的這張表,沒(méi)有什么區(qū)別,即你若編寫了訪問(wèn)SQL Server數(shù)據(jù)庫(kù)的SELECT語(yǔ)句,同樣可用于訪問(wèn)Access數(shù)據(jù)庫(kù)或VFP數(shù)據(jù)庫(kù),只要將連接的數(shù)據(jù)源改一改即可。但你若要對(duì)“出生年月”這一日期型字段進(jìn)行查詢的話,問(wèn)題就來(lái)了,例如要查詢1980年1月1日至1985年12月31日的員工資料,訪問(wèn)SQL Server中的數(shù)據(jù)表的語(yǔ)句是:
    Select * from employee where 出生年月 between '1980-01-01' and '1985-12-31'
    如果想當(dāng)然地用這條語(yǔ)句去訪問(wèn)Access數(shù)據(jù)庫(kù)那就大錯(cuò)特錯(cuò)了,必須加上函數(shù)DateValue(),正確的寫法如下:
    Select * from employee where 出生年月between DateValue('1980-01-01')and DateValue('1985-12-31')
    如果要訪問(wèn)VFP日期型字段又必須采用以下這種寫法:
    select * from employee where 出生年月 between {^1980-01-01} and {^1985-12-31}
    以上是SELECT語(yǔ)句對(duì)于訪問(wèn)不同數(shù)據(jù)庫(kù)的日期型字段的差別,不了解這種差別,你會(huì)被搞得暈頭轉(zhuǎn)向,不知錯(cuò)在哪里。