首页 > 代码库 > C++ 操作Office的Access数据库
C++ 操作Office的Access数据库
与我的另外一篇文章相呼应,在那片文章里面,使用的是C++ 操作xml的方法。下面的代码是操作一个access数据库的范例:
CoInitialize(NULL); //定义两个对象指针。 _ConnectionPtr m_pConnection_circle; _RecordsetPtr m_pRecordset_circle; _ConnectionPtr m_pConnection_rectangle; _RecordsetPtr m_pRecordset_rectangle; m_pConnection_circle.CreateInstance(__uuidof(Connection));//创建对象。 m_pRecordset_circle.CreateInstance(__uuidof(Recordset)); m_pConnection_rectangle.CreateInstance(__uuidof(Connection)); m_pRecordset_rectangle.CreateInstance(__uuidof(Recordset)); //连接数据库。 try { m_pConnection_circle->Open(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\testADOproj\\Database4.mdb;Persist Security Info=False"), _T(""), _T(""),adModeUnknown); m_pConnection_rectangle->Open(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\testADOproj\\Database3.mdb;Persist Security Info=False"), _T(""), _T(""),adModeUnknown); } catch(_com_error e) { AfxMessageBox(e.ErrorMessage()); CString errorSee="连接数据库出错。"; AfxMessageBox(errorSee); } //利用connection对象的excute函数执行SQL命令。执行完之后返回一个指向记录集Recordset的指针。 //执行语句:在表circle中选择ID的全部 try { CString strSql= _T("select * from Circle where ID>0");//注意字段的数据类型 m_pRecordset_circle->Open((LPCTSTR)strSql, (IDispatch*)m_pConnection_circle, adOpenStatic, adLockOptimistic, adCmdUnknown); CString strSql2= _T("select * from rectangle1 where pc_ID>0");//注意字段的数据类型 m_pRecordset_rectangle->Open((LPCTSTR)strSql2, (IDispatch*)m_pConnection_rectangle, adOpenStatic, adLockOptimistic, adCmdUnknown); } catch(_com_error e2) { CString errorSee2= "SQL语句执行出错!"; AfxMessageBox(errorSee2); AfxMessageBox(e2.ErrorMessage()); } //将获得的数据放到tree中节点。 while(!m_pRecordset_circle->adoEOF) { _bstr_t circle_radius = m_pRecordset_circle->Fields->GetItem("CircleRadius")->Value; //AfxMessageBox(circle_radius); addtoItem(circle_radius); m_pRecordset_circle->MoveNext(); } while (!m_pRecordset_rectangle->adoEOF) { _bstr_t rec_long = m_pRecordset_rectangle->Fields->GetItem("rec_long")->Value; _bstr_t rec_wigth = m_pRecordset_rectangle->Fields->GetItem("rec_weight")->Value; //AfxMessageBox(rec_long); //AfxMessageBox(rec_wigth); addtoItem(rec_long,rec_wigth); m_pRecordset_rectangle->MoveNext(); } m_pRecordset_circle->Close();//关闭记录集指针。 m_pConnection_circle->Close();//关闭连接对象指针。 m_pRecordset_rectangle->Close();//关闭记录集指针。 m_pConnection_rectangle->Close();//关闭连接对象指针。 m_pRecordset_circle = NULL; m_pConnection_circle = NULL; m_pRecordset_rectangle = NULL; m_pConnection_rectangle = NULL; if((m_pRecordset_circle==NULL)&&(m_pConnection_circle = NULL)&&(m_pRecordset_rectangle==NULL)&&(m_pConnection_rectangle = NULL)) { CoUninitialize();//释放COM资源。 return TRUE; } else { m_pRecordset_circle = NULL; m_pConnection_circle = NULL; m_pRecordset_rectangle = NULL; m_pConnection_rectangle = NULL; CoUninitialize();//释放COM资源。 return TRUE; }
C++ 操作Office的Access数据库
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。