连ADO,错在哪????~~~``

wandou999 2004-10-15 10:27:11
http://community.csdn.net/Expert/topic/3450/3450090.xml?temp=.2066614
-----------------------------------------------------------------------
在class CHotel_MIS1App : public CWinApp中加入
public:
bool ADOExecute(_RecordsetPtr &ADOSet,_variant_t &strSQL);
_RecordsetPtr m_pADOSet;
int m_iLoginCount;
CString m_sCurrentUser;
CHotel_MIS1App();
extern CHotel_MIS1App theApp;
private:
_ConnectionPtr ADOConn;

在stdafx.h中加入:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace\
rename("EOF","EndOfFile")\
rename("LockTypeEnum","newLockTypeEnum")\
rename("DataTypeEnum","newDataTypeEnum")\
rename("FieldAttributeEnum","newFieldAttributeEnum")\
rename("EditModeEnum","newEditModeEnum")\
rename("RecordStatusEnum","newRecordStatusEnum")\
rename("ParameterDirectionEnum","newParameterDirectionEnum")

在BOOL CHotel_MIS1App::InitInstance()加入
m_iLoginCount=0;
if(FAILED(::CoInitialize(NULL)))
{
AfxMessageBox("ADO Init failed");
return false;
}
try
{
ADOConn.CreateInstance(__uuidof(Connection));
ADOConn->Open("DNS=Hotel_MIS1;Provider=MSDASQL","sa","",adConnectUnspecified);
}
catch(_com_error &e)
{
CString err;
err.Format("%s",(char*)(e.Description()));
AfxMessageBox(err);
}
catch(...)
{
AfxMessageBox("Unknown Error");
}
m_pADOSet.CreateInstance(__uuidof(Recordset));
在bool CHotel_MIS1App::ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL)
中加入
if(ADOSet->State==adStateOpen)ADOSet->Close();
try
{
ADOSet->Open(strSQL,ADOConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdUnknown);
return true;
}
catch(_com_error &e)
{
CString err;
err.Format("ADO Error:%s",(char*)e.Description());
AfxMessageBox(err);
return false;
}
在int CHotel_MIS1App::ExitInstance() 中加入
if(adStateOpen==ADOConn->State) ADOConn->Close();
ADOConn.Release();
if(adStateOpen==m_pADOSet->State)m_pADOSet->Close();
m_pADOSet.Release();
return CWinApp::ExitInstance();

这就是全部内容,麻烦大家了!!
...全文
488 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
bugyouth 2004-11-23
  • 打赏
  • 举报
回复
注意OleInitialize函数在InitInstance函数中的位置,靠后一些
rezood 2004-11-23
  • 打赏
  • 举报
回复
老问题了
李秀国之印 2004-11-10
  • 打赏
  • 举报
回复
to try it: gooyan(超级替补)
zhaogaojian 2004-11-10
  • 打赏
  • 举报
回复
先通过控制面板配置一下
gooyan 2004-10-25
  • 打赏
  • 举报
回复
1.stdafx.h中加入
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2。app文件的InitInstance中加入
if(S_OK!=OleInitialize(NULL))
{
AfxMessageBox("初始化COM组件库错误");
}


下面就是数据库操作
_ConnectionPtr pConn;
_RecordsetPtr pRs;
CString strSQL;
pConn.CreateInstance(__uuidof(Connection));
pConn->CursorLocation=adUseClient;
strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
pConn->Open(_bstr_t(strSQL),"","",-1);

pRs.CreateInstance(__uuidof(Recordset));
pRs->CursorLocation=adUseClient;
pRs->PutActiveConnection(pConn.GetInterfacePtr());

pRs1.CreateInstance(__uuidof(Recordset));
pRs1->CursorLocation=adUseClient;
pRs1->PutActiveConnection(pConn.GetInterfacePtr());

strSQL="select * from catalog order by cataid";
pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);
追求自由 2004-10-22
  • 打赏
  • 举报
回复
你连一下别的数据库看能不能连上?
你别用odbc,直连一下看能否成功,我的问题就是这样解决的。
danielzhu 2004-10-21
  • 打赏
  • 举报
回复
UP
shakira008 2004-10-20
  • 打赏
  • 举报
回复
study
muliu92 2004-10-19
  • 打赏
  • 举报
回复
Connection 这个好象是 ADO.Connection 吧!

而且CreateInstance 它的返回值也不是一个bool\BOOL 啊! 不是良好的变成习惯
jayfunk 2004-10-19
  • 打赏
  • 举报
回复
你把!号后边的东东()起来看看
sony19791015 2004-10-19
  • 打赏
  • 举报
回复
gz
nanguadeng 2004-10-19
  • 打赏
  • 举报
回复
AppWizard中选上Automation
wenxinfly 2004-10-19
  • 打赏
  • 举报
回复
借楼主的问一个
if(!m_pConnection.CreateInstance(__uuidof(Connection))) //
{
AfxMessageBox("Error!");
//
}
这个函数有错误
是什么原因?
kugou123 2004-10-18
  • 打赏
  • 举报
回复
贴贴出错信息看看。
快乐鹦鹉 2004-10-15
  • 打赏
  • 举报
回复
放在BOOL CHotel_MIS1App::InitInstance()里面啊
快乐鹦鹉 2004-10-15
  • 打赏
  • 举报
回复
if (!AfxOleInit())
{
AfxMessageBox("初始化OLE失败!");
return FALSE;
}
clack234 2004-10-15
  • 打赏
  • 举报
回复
错误信息或错误提示代码贴出来看看。
内存泄漏 2004-10-15
  • 打赏
  • 举报
回复
代码没有问题啊。。不知道为什么会出现你那样的情况,是不是你import的路径错了??

还有,在int CHotel_MIS1App::ExitInstance() 里面添加下面一句:
::CoUninitialize();

4,018

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧