我们经常需要保存一些记录,在需要的时候可以调取数据来查看。
有很多种选择,比如最基本的txt文件,Excel文件, Word文件等等, 在此介绍一种数据库,即为Access,它是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统,使用方便可靠。
话不多说,下面开始介绍如何操作Access数据库。
首先, 在VS2010中建立一个MFC新项目, 然后在其stdafx.h中加入如下语句:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
然后在cpp添加OLE初始化:
if(!AfxOleInit()) {
AfxMessageBox(_T("Initializes OLE support for the application fail!"));
}
接着打开数据库文件:
_RecordsetPtr m_pRecordset;//记录集对象智能指针,它对记录集提供了控制功能
_ConnectionPtr m_pConnection;//连接对象智能指针,通常用于创建一个数据库连接或执行一条不返回任何结果的SQL语句
_bstr_t strcnn(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source=contact.mdb"));
try
{
m_pConnection.CreateInstance(__uuidof(Connection));//创建连接对象实例
m_pConnection->Open(strcnn, _T(""), _T(""), adModeUnknown);//打开数据库
m_pRecordset.CreateInstance(__uuidof(Recordset));//创建记录集对象实例
}
catch(_com_error e)//获取异常信息
{
AfxMessageBox(e.ErrorMessage());
return FALSE;
}
//获取数据库中的记录总数
_variant_t RecordsAffected;
m_pRecordset = m_pConnection->Execute("SELECT COUNT(*) FROM contact",&RecordsAffected,adCmdText);
_variant_t vIndex = (long)0;
_variant_t vCount = m_pRecordset->GetCollect(vIndex);//取得第一个字段的值放入vCount变量
m_pRecordset->Close();//关闭记录集 CString message;
printf("vCount = %d\r\n", vCount.lVal);
//判断数据库中是否已经存在该记录的方法
_variant_t RecordsAffected;
CString str("XXXX");
CString strSql;
strSql.Format(_T("SELECT COUNT(*) FROM contact WHERE 列名= '%s'"), str);
m_pRecordset = m_pConnection->Execute(_bstr_t(strSql),&RecordsAffected,adCmdText);
_variant_t vIndex = (long)0;
_variant_t vCount = m_pRecordset->GetCollect(vIndex);//取得第一个字段的值放入vCount变量
m_pRecordset->Close();//关闭记录集 CString message;
printf("vCount = %d\r\n", vCount.lVal);