用ADO怎么连接Access数据库?

不是用控件,用ADO类库怎么连接Access数据库?
从ADO派生出一个类,但是在程序中没有声明这个类的对象,
那么这些代码怎么实现,难道是在类中自动实现?

茅侃侃
浏览 1000回答 3
3回答

慕村9548890

_ConnectionPtr m_pConnection;CoInitialize(NULL);m_pConnection.CreateInstance(__uuidof(Connection));// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,// 因为它有时会经常出现一些想不到的错误。try{// 打开本地Access库db1.mdbm_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb","","",adModeUnknown);}catch(_com_error e){cout<<"数据库连接失败,确认数据库db1.mdb是否在当前路径下!"<<endl;return FALSE;}//-------------------------------------------------------------------------------------//建立数据集//-------------------------------------------------------------------------------------_RecordsetPtr m_pRecordset;m_pRecordset.CreateInstance(__uuidof(Recordset));// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,// 因为它有时会经常出现一些意想不到的错误。try{m_pRecordset->Open("SELECT * FROM Home2",m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针adOpenDynamic,adLockOptimistic,adCmdText);}catch(_com_error *e){//AfxMessageBox(e->ErrorMessage());cout<<e->ErrorMessage()<<endl;}//--------------------------------------------------------------------------------------//读取数据//--------------------------------------------------------------------------------------_variant_t&nbsp;var;char *strID,*strX,*strY;float X,Y;try{if(!m_pRecordset->BOF)m_pRecordset->MoveFirst();else{cout<<"表内数据为空"<<endl;return 1;}// 读入库中各字段并加入列表框中while(!m_pRecordset->adoEOF){var = m_pRecordset->GetCollect("ID");if(var.vt != VT_NULL)strID= _com_util::ConvertBSTRToString((_bstr_t)var); //_variant_t转字符串var = m_pRecordset->GetCollect("X");if(var.vt != VT_NULL)strX=_com_util::ConvertBSTRToString((_bstr_t)var);var = m_pRecordset->GetCollect("Y");if(var.vt != VT_NULL)strY=_com_util::ConvertBSTRToString((_bstr_t)var);cout<<strID<<"is"<<strX<<" "<<strY<<endl;m_pRecordset->MoveNext();}}catch(_com_error *e){cout<<e->ErrorMessage()<<endl;}//--------------------------------------------------------------------------------------//关闭数据集m_pRecordset->Close();m_pRecordset = NULL;//--------------------------------------------------------------------------------------//关闭数据库连接//--------------------------------------------------------------------------------------if(m_pConnection->State)m_pConnection->Close();m_pConnection= NULL;&nbsp;

DIEA

CSize本身属于无量纲的单位,不存在换算问题。你上面获得的Size,本身单位就是像素。不过CreateFont函数本身w并不能精确控制创建的字体,顶多创建一个接近你的要求的字体。如果你的字体比例太奇怪,CreateFont是做不到和你要求一样的。
打开App,查看更多内容
随时随地看视频慕课网APP