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

//以下添加功能