使用C++编程语言,连接对Access数据库进行操作,常用的方法有DAO和ADO两种方式,本文将介绍采用ADO的方式方位Access数据库。 先介绍一下ADO,ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组建。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。 在程序的开始,首先导入所需要的库:#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") ,这里重命名EOF是必要的,因为典型的VC应用都已经定义了EOF作为常数-1。 完整的程序如下,以注释的形式来对程序进行解释: _ConnectionPtr m_pConnection; //连接access数据库的链接对象 _RecordsetPtr m_pRecordset; //结果集对象 CoInitialize(NULL); //初始化 m_pConnection.CreateInstance(__uuidof(Connection)); //实例化对象 //连到具体某个mdb ,此处的的Provider语句因Access版本的不同而有所不同。 try { m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyAccess.mdb","","", adModeUnknown); } catch(_com_error e) { AfxMessagebox(_T("数据库连接失败!")); return; } m_pRecordset.CreateInstance(__uuidof(Recordset)); //实例化结果集对象 //执行sql语句 try { CString sql= _T("select * from Patient"); m_pRecordset->Open(sql, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); } catch(_com_error *e) { AfxMessageBox(e->ErrorMessage()); if(m_pConnection->State) { m_pConnection->Close(); m_pConnection= NULL; } return ; } //处理结果集 try { //若结果为空,结束 if(m_pRecordset->BOF) { AfxMessageBox_T(("表内数据为空!")); if(m_pConnection->State) { m_pRecordset->Close(); m_pRecordset = NULL; m_pConnection->Close(); m_pConnection= NULL; } return ; } //游标定位到第一条记录 m_pRecordset->MoveFirst(); _variant_t var; //从结果集中取出的数据放到var中 char *name; while(!m_pRecordset->adoEOF) { var= m_pRecordset->GetCollect("Name"); //要取字段的名称。 if(var.vt != VT_NULL) { name= _com_util::ConvertBSTRToString((_bstr_t)var); //转换成char*类型 } string MyName = name; m_pRecordset->MoveNext(); } } catch(_com_error *e) { AfxMessageBox(e->ErrorMssage()); } //退出程序时的处理 ,关闭数据库的相关操作 if(m_pConnection->State) { m_pRecordset->Close(); m_pRecordset = NULL; m_pConnection->Close(); m_pConnection= NULL; }
C++连接access数据库
最新推荐文章于 2025-03-10 14:23:34 发布