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

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

兩種方法主要根據CDatabase類的Open函數而來:

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

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

1.根據Access文件的路徑進行連接

 

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數據源后連接

 

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);

//以下添加功能