COM+中返回_Connection的问题,求助!

wozhuchuanwei 2005-10-17 02:34:18
我按如下方式建了一个COM+组件
New->Activex->Transactional Object
并实现了如下一个函数
function TConnCOM.GetConn: _Connection;
begin
try
fConn := TADOConnection.Create(nil);
with fConn do
begin
ConnectionString := 'Provider=SQLOLEDB.1;'
+'Password=pas;'
+'Persist Security Info=True;'
+'User ID=test;'
+'Initial Catalog=master;'
+'Data Source=10.0.3.202';
LoginPrompt := False;
end;
Result := _Connection(fConn.ConnectionObject);
end;

现在的问题是
我在前台怎么将这个_Connection传给一个TADOQUERY?
我的做法是这样的:
procedure TForm1.Button1Click(Sender: TObject);
var
A : IConnCOM;
begin
A := CoConnCOM.CreateRemote('random');
Showmessage(A.GetConn.ConnectionString); //这个正常
AQ.Connection.ConnectionObject := _Connection(A.GetConn); //这样用出错
AQ.Connection.ConnectionObject := Connection(A.GetConn); //这样用也出错
With AQ do
begin
Close;
SQL.Text := 'Select Count(*) as iCount From syscolumns';
Open;
ShowMessage(FieldByName('iCount').AsString);
end;
end;
错误提示如下:
Access violation at address 0047C43D in module 'APP.exe'. Read of address 00000000
...全文
178 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
日总是我哥 2005-10-25
  • 打赏
  • 举报
回复
,
mxj2000 2005-10-19
  • 打赏
  • 举报
回复
COM+中组件池化,从而达到数据库连接池的功能
本身用 COM+提供的对象池就可以做到
wozhuchuanwei 2005-10-18
  • 打赏
  • 举报
回复
我现在就是不知道怎么才能将TADOCONNECTION作为类型输出
请问怎么能做到?
日总是我哥 2005-10-18
  • 打赏
  • 举报
回复
不论是不是COM+,我想道理应该是一样的吧?

将TADOConnection作为类型输出。
或者传出Pointer
wozhuchuanwei 2005-10-18
  • 打赏
  • 举报
回复
其实我的思路是这样的,在COM+中建一个数据连接的组件,返回一个TADOCONNECION的实例,并将该组件池化,从而达到数据库连接池的功能。这样的话,就不用写代码去维护这个池了,由MTS来完成。大家说这个思路可行么?如果不行,能说说您的思路么?谢谢~
wozhuchuanwei 2005-10-18
  • 打赏
  • 举报
回复
我就是不清楚是不是不可以
但我这句
Showmessage(A.GetConn.ConnectionString); //这个正常
能等到
Provider=SQLOLEDB.1;Password=pas;Persist Security Info=True;User ID=test;Initial Catalog=master;Data Source=10.0.3.202
这个值,这是不是表示能传回来呢?
wozhuchuanwei 2005-10-18
  • 打赏
  • 举报
回复
谢谢COOLSLOB
“如果要使用TADOQuery,建议使用TADOConnection,不要使用_Connection原生对像”
我的想法是组件返回一个TADOCONNECTION的实例,但就是不知道在COM+中的返回变量怎么设置,所以就返回了TADOCONNECION实例的ConnectionObject属性。请问一下,怎么返回一个TADOCONNECTION的实例呢?或者是不是我的思路上有问题?
wozhuchuanwei 2005-10-18
  • 打赏
  • 举报
回复
结帖了
好像我这种思路不行!
ysai 2005-10-18
  • 打赏
  • 举报
回复
不要告诉我你想把中间层的对象传到客户端使用,如果这都能成功你就是神了
mxj2000 2005-10-18
  • 打赏
  • 举报
回复
客户端和COM+都可能不在同一台机器 客户端也可以用COM+机器上的_Connection?
mxj2000 2005-10-18
  • 打赏
  • 举报
回复
COM+中返回_Connection?这个也能做?
日总是我哥 2005-10-18
  • 打赏
  • 举报
回复
如果要使用 _Connection,建议不要使用TADOQuery,干脆直接也 使用原生对象。

如果要使用TADOQuery,建议使用TADOConnection,不要使用_Connection原生对像。
wozhuchuanwei 2005-10-18
  • 打赏
  • 举报
回复
现在我改了一下
出现的错误代码为
OLE error 80040202

我到处查了都没查到这是什么错误
求助!
wozhuchuanwei 2005-10-18
  • 打赏
  • 举报
回复
顶一下
大家再帮我看一下吧!
wozhuchuanwei 2005-10-17
  • 打赏
  • 举报
回复
大家都给点意见吧~~

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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