与我的另外一篇文章相呼应,在那片文章里面,使用的是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;
}
转载于:https://blog.51cto.com/3994129/1597869