设置ActiveConnection时出现的奇怪的写内存错误

wyarrant 2003-01-09 03:18:41
_ConnectionPtr Conn1;
_CommandPtr Cmd1;
_ParameterPtr Param1;
_RecordsetPtr Rs1;

HRESULT hr;
Conn1.CreateInstance( __uuidof( ::Connection ) );
Conn1->ConnectionString =
_bstr_t(L"Driver={SQL Server};Server=SERVER;Uid=sa;Pwd=;Database=TEST");
hr=Conn1->Open( source,user,pwd,16 );//hr=0

hr=Cmd1.CreateInstance( __uuidof( ::Command ) );//hr=0
Cmd1->ActiveConnection = Conn1;//执行到此处出错
...全文
52 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Aizz 2003-01-09
  • 打赏
  • 举报
回复
刚才试了一下,两种方式都可以成功赋值,前面我的猜测是错误的,抱歉。
cmd->PutActiveConnection(Conn1.GetInterFacePtr())是调用格式。

第四个参数表示Connection打开的方式,16是adAsyncConnect,表示异步打开连接。异步表示Open返回后该连接不一定连接成功,只有ConnectComplete事件发生后该连接才可用。我想这个就是问题的原因了,解决方法:
1、Conn1->Open(...)后等待ConnectComplete事件再继续执行;
2、把16改为-1。
wyarrant 2003-01-09
  • 打赏
  • 举报
回复
Conn1->Open( source,user,pwd,16 );
还有就是这个函数的第4个参数的意义?
wyarrant 2003-01-09
  • 打赏
  • 举报
回复
但是conn1.open的返回只是正确的阿?

提示错误:Unhandled exception in test.exe(KERNEL32.DLL):0xE06D7363:Microsoft C++ Exception.
microyzy 2003-01-09
  • 打赏
  • 举报
回复
ActiveConnection可以赋值,是不是Conn1的问题?
Aizz 2003-01-09
  • 打赏
  • 举报
回复
可能是ActiveConnection属性不能访问吧,基本上这些属性都是通过GetXxx和PutXxx方法访问的。我手头没有MSDN,无法证实,抱歉。
wyarrant 2003-01-09
  • 打赏
  • 举报
回复
那出问题的原因是?
上面的代码基本上是拷贝msdn的没道理出错啊
Aizz 2003-01-09
  • 打赏
  • 举报
回复
试试Cmd1->PutActiveConnection(...)

4,012

社区成员

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

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