vc 中 用ado 访问access数据库,该怎么处理
vc 中 用ado 访问access数据库
想用vc6.0 的ado 访问access数据库,把结果放在Editbox中,程序如下,有很多错误不知道怎么解决,请大家帮帮忙!
之前导入#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
程序如下:
void CClientDlg::OnButtonQuery()
{
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
pConn->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=zhan.mdb;User ID=sa;Password=123456";
pRst=pConn->Execute("select * from OilSubstation",NULL,adCmdText);
while(!pRst->rsEOF)
{
((CEditBox*)GetDlgItem(IDC_EDIT_WORDS))->AddString(
(_bstr_t)pRst->GetCollect("String rate"));
pRst->MoveNext();
}
pRst->Close();
pConn->Close();
//pCmd.Release();
pRst.Release();
pConn.Release();
CoUninitialize();
}
运行结果总是错误(下面就是运行的错误),请大家帮我改正下。。谢谢。。。。
Compiling...
ClientDlg.cpp
c:\documents and settings\administrator\client\debug\msado15.tlh(407) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(230) : error C2001: newline in constant
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2146: syntax error : missing ';' before identifier 'Data'
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'Data' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2146: syntax error : missing ';' before identifier 'Source'
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'Source' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'zhan' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2228: left of '.mdb' must have class/struct/union type
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'User' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2146: syntax error : missing ';' before identifier 'ID'
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'ID' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'sa' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'Password' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2001: newline in constant
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2143: syntax error : missing ';' before 'string'
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(237) : error C2146: syntax error : missing ';' before identifier 'pRst'
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(251) : error C2065: 'CEditBox' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(251) : error C2059: syntax error : ')'
Error executing cl.exe.
------解决方案--------------------
想用vc6.0 的ado 访问access数据库,把结果放在Editbox中,程序如下,有很多错误不知道怎么解决,请大家帮帮忙!
之前导入#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
程序如下:
void CClientDlg::OnButtonQuery()
{
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
pConn->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=zhan.mdb;User ID=sa;Password=123456";
pRst=pConn->Execute("select * from OilSubstation",NULL,adCmdText);
while(!pRst->rsEOF)
{
((CEditBox*)GetDlgItem(IDC_EDIT_WORDS))->AddString(
(_bstr_t)pRst->GetCollect("String rate"));
pRst->MoveNext();
}
pRst->Close();
pConn->Close();
//pCmd.Release();
pRst.Release();
pConn.Release();
CoUninitialize();
}
运行结果总是错误(下面就是运行的错误),请大家帮我改正下。。谢谢。。。。
Compiling...
ClientDlg.cpp
c:\documents and settings\administrator\client\debug\msado15.tlh(407) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(230) : error C2001: newline in constant
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2146: syntax error : missing ';' before identifier 'Data'
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'Data' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2146: syntax error : missing ';' before identifier 'Source'
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'Source' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'zhan' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2228: left of '.mdb' must have class/struct/union type
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'User' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2146: syntax error : missing ';' before identifier 'ID'
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'ID' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'sa' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2065: 'Password' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2001: newline in constant
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(231) : error C2143: syntax error : missing ';' before 'string'
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(237) : error C2146: syntax error : missing ';' before identifier 'pRst'
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(251) : error C2065: 'CEditBox' : undeclared identifier
C:\Documents and Settings\Administrator\Client\ClientDlg.cpp(251) : error C2059: syntax error : ')'
Error executing cl.exe.
------解决方案--------------------
- C/C++ code
::CoInitialize(NULL); try { m_pConnection.CreateInstance("ADODB.Connection"); //或者m_pConnection.CreateInstance(__uuidof(Connection)); _bstr_t strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=myData.mdb";//mdb文件 放在工程目录下 m_pConnection->Open(strConnect,"","",adModeUnknown); m_pConnection->Open(strConnect,"","",adModeUnknown); DBflag=1; } catch(_com_error e) { AfxMessageBox(L"数据库连接失败!"); } if (DBflag==1) { CString sql; //这里如果没有要写参数的话就可以直接 将这个sql语句 写到 str2 那个位置就ok了. sql.Format(L"select * from PersonInfo order by ID"); BSTR str2=sql.AllocSysString(); m_pRecordset.CreateInstance("ADODB.Recordset"); this->m_pRecordset->Open(str2,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText); int i=0; //int rCount; while(!this->m_pRecordset->adoEOF) { CString strName,strAge,strAddr,strID; _variant_t name,age,addr,mid; name=m_pRecordset->GetCollect("Name"); age=m_pRecordset->GetCollect("Age"); addr=m_pRecordset->GetCollect("Depart"); mid=m_pRecordset->GetCollect("ID"); strName.Format(L"%s",(LPCTSTR)(_bstr_t)name); strAge.Format(L"%s",(LPCTSTR)(_bstr_t)age); strAddr.Format(L"%s",(LPCTSTR)(_bstr_t)addr); strID.Format(L"%s",(LPCTSTR)(_bstr_t)mid); m_DB_List.InsertItem(i, L"VC++"); //插入行 m_DB_List.SetItemText(i,0,strName); //设置数据 m_DB_List.SetItemText(i,1,strAge); m_DB_List.SetItemText(i,2,strAddr); m_DB_List.SetItemText(i,3,strID); m_pRecordset->MoveNext(); i++; } m_pRecordset->Close(); m_pRecordset=NULL; }