以Access文件作為數(shù)據(jù)庫(kù)進(jìn)行連接,一般可以使用ODBC接口,在這里我們使用MFC的CDatabase類(lèi),該類(lèi)是對(duì)SQLConnect等ODBC的API的封裝。需要包含afxdb.h頭文件。利用ODBC數(shù)據(jù)源進(jìn)行數(shù)據(jù)庫(kù)連接有兩種方法:一種是自動(dòng)或手工配置ODBC數(shù)據(jù)源后連接,一種是不用配置ODBC數(shù)據(jù)源,而是直接根據(jù)Access文件的路徑進(jìn)行連接。

在MFC中,為ODBC預(yù)定義了幾個(gè)類(lèi),其中主要的是數(shù)據(jù)庫(kù)類(lèi)(CDatabase)和記錄集合類(lèi)(CRecoredset)。這兩個(gè)類(lèi)既有聯(lián)系又有區(qū)別,在應(yīng)用程序中,可以分別使用,也可以同時(shí)使用,每一類(lèi)也可以同時(shí)存在多個(gè)對(duì)象。CDatabase的每一個(gè)對(duì)象代表了一個(gè)數(shù)據(jù)源的連接,CRecordset的每一個(gè)對(duì)象代表了從一個(gè)數(shù)據(jù)表中按預(yù)定的查詢(xún)條件獲得的記錄的集合,一般說(shuō)來(lái),前者適宜于對(duì)數(shù)據(jù)源下的某個(gè)數(shù)據(jù)表格進(jìn)行整體操作,后者用于對(duì)所選的記錄集合進(jìn)行處理。

兩種方法主要根據(jù)CDatabase類(lèi)的Open函數(shù)而來(lái):

BOOL CDatabase::Open(
                                          LPCTSTR lpszDSN, 
                                          BOOL bExclusive 
= FALSE,
                                          BOOL bReadonly 
= FALSE, 
                                          LPCTSTR lpszConnect 
= _T("ODBC;"),
                                          BOOL bUseCursorLib 
= TRUE );

參數(shù)說(shuō)明如下:
(1)lpszDSN:要連接的數(shù)據(jù)源的名字,如果lpszDSN = NULL且lpszConnect中也沒(méi)有指明數(shù)據(jù)源名,則該調(diào)用會(huì)自動(dòng)出現(xiàn)一個(gè)對(duì)話(huà)框列出所有可用的數(shù)據(jù)源(名),讓用戶(hù)選擇。
(2)bExclusive:只支持“假”(False)值,表示為共享(share)方式連接。因此,應(yīng)用程序在運(yùn)行前,一定要裝入share.exe或在Windows的system.ini中裝入vshare.386。(什么意思不太懂......)
(3)ReadOnly:指明數(shù)據(jù)源操作方式是“只讀”還是可以修改。
(4)lpszConnect::指明連接字符串,包括數(shù)據(jù)源名、用戶(hù)標(biāo)識(shí)碼、口令等信息。該字符串必須以“ODBC;”開(kāi)頭,表示該連接是與一個(gè)ODBC數(shù)據(jù)源的連接(考慮以后版本支持非ODBC數(shù)據(jù)源)。

1.根據(jù)Access文件的路徑進(jìn)行連接

 

CString strConnect;
strConnect 
= _T("ODBC;DRIVER={MICROSOFT ACCESS DRIVER(*.mdb)};UID=;PWD=;DBQ=D:\\MusicSearch.mdb");
CDatabase db;
if(!db.Open(NULL, FALSE, FALSE, strConnect))
{
   
return TRUE;
}


CString strSQL;
strSQL 
= _T("select TOP 100 * from Music");
CRecordset rs(
&db);
rs.Open(CRecordset::forwardOnly, strSQL);

CString strValue;
int i = 0;
while(!rs.IsEOF())
{
   
//添加功能

   rs.MoveNext();
   i
++;
}
 

rs.Close();
db.Close();


2.配置ODBC數(shù)據(jù)源后連接

 

CDatabase db;
if(!db.Open(_T("MusicSearch")))
{
   
return TRUE;
}


CString strSQL;
strSQL 
= _T("select TOP 100 * from Music");
CRecordset rs(
&db);
rs.Open(CRecordset::forwardOnly, strSQL);

//以下添加功能