目前,我所掌握的VC程序访问数据库有两种方法,一种是用ODBC,一种是ADO。
ODBC访问数据库主要是通过MFC中的两个类,一个是CDatabase,一个是CRecordSet。这种访问方式需要设置数据源,我始终觉得不灵活,所以我比较喜欢使用ADO。
ADO有三个智能指针:_ConnectionPtr,_CommandPtr,_RecordsetPtr。
在使用ADO之前,必须加载ADO,加载的方法是,在StdAfx.h文件中加入:
#import "c:/program files/common files/system/ado/msado15.dll" /
no_namespace /
rename("EOF","adoEOF")
再在适当的地方添加初始化函数:AfxOleInit()此函数在MFC中使用,在非MFC中使用另外两个函数:
CoInitialize(NULL);
CoUnInitialize();
初始化工作完成以后就可以连接数据库。代码如下:
m_pConnection.CreateInstance(_uuidof(Connection));
try
{
m_pConnection->Open("
Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=ado.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("no");
}
之后就可以操作数据库了。以前出错的原因找到了,是因为没有创建实例,也就是没有CreateInstance。