ADO Connection 的问题???答出者高分!!!

ma811 2002-03-13 06:00:15
各位大虾:为什么ADO的连接数会自动增加?我的代码如下:

_ConnectionPtr cnn;
_RecordsetPtr rs;

cnn.CreateInstance(...);
rs.CreateInstance(...);

cnn->Open(...);
rs->Open(_bstr_t(strSQL), (IDispatch*)cnn, adOpenDynamic, adLockOptimistic, asCmdText);

...
...

rs->Close();

问题是rs每一次Open时都会新建一个连接,为什么这样,可以不增加这个连接吗?
本人用的是Sybase 11, 连接数增加是用Sybase的SQLadvantage查出的?
答出者高分!!!
...全文
120 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wolfman1970 2002-03-17
  • 打赏
  • 举报
回复
你有没有装MSDN(2000版),有的话,找里面关于ADO方面的例程对着查一下。照着微软的例子改一个DEMO,试试看还会不会发生这种现象。
sg_wong 2002-03-17
  • 打赏
  • 举报
回复
试一下:
rs->Open(_bstr_t(strSQL), _variant_t((IDispatch*)cnn,true), adOpenDynamic, adLockOptimistic, asCmdText);
strangecat 2002-03-17
  • 打赏
  • 举报
回复
在_RecordSetPtr中,
connection 的类型是_variant_t.
你可以直接把一个_bstr_t作为_Recordset::Open的参数._Recordset::Open用该参数作为连接字符串建立连接后,会直接把connection变成相应的连接类型.

结论:调用_Recordset::Open时,不用再调用connection的open.
lvlvlvlylyly 2002-03-14
  • 打赏
  • 举报
回复
各位~!!!!!!!!!
帮帮忙啊!!!!我有一个好简单的问题,但是没有碰到人帮我啊,我已经没钱了,就要下线了,我实在等不及了,就在这里做做广告吧,帮我去看看我的题吧!谢天谢谢你们的关注了!我下线了啊!希望下次来的时候能够碰到救主!
http://www.csdn.net/expert/topic/576/576103.xml?temp=.2464258
prometheusphinx 2002-03-14
  • 打赏
  • 举报
回复
你的cnn和rs在程序运行过程中是不是只CreateInstance了一次呢?
40Star 2002-03-14
  • 打赏
  • 举报
回复
只要建立一个全局的Connection对象就可以了
smartlu 2002-03-13
  • 打赏
  • 举报
回复
楼上说的很对!!!
ma811 2002-03-13
  • 打赏
  • 举报
回复
现在的情况是cnn(Connection)是全局的,rs(Recordset)是局部的,rs Open时用的是cnn,但Open后就会多出一个Connection,程序没有用次打开rs都Open一个Connection
prometheusphinx 2002-03-13
  • 打赏
  • 举报
回复
Open没什么关系,只要是一个connection,Open多少次都没关系,关键是
cnn.CreateInstance(...); 创建一个之后Open就会增加一个连接。
tpProgramer 2002-03-13
  • 打赏
  • 举报
回复
你的原因是:
cnn->Open(...);
rs->Open(_bstr_t(strSQL), (IDispatch*)cnn, adOpenDynamic, adLockOptimistic, asCmdText);
这两句在一块,当然rs和cnn都会被open啦。
你可以在整个程序初始化的时候打开cnn,
在程序结束时关闭cnn.

即在程序运行期间保持cnn处于打开状态。
在运行期间使用rs时就不要再打开cnn啦!

1,649

社区成员

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

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