不用delphi提供的TDataSetProvider和TClientDataSet,接口方法能返回的类型很多,但是只能返回VARIANT*类型,如果我要在将一个服务器段的对象传回给客户端,怎么实现,还是说这样做法本身就不能实现?服务器:
procedure TcoDBServer.getDate(var vResult: OleVariant);
var Conn: TADOConnection; rs: TmyADODataSet; rsp: TDataSetProvider;
begin
CoInitialize( nil );//使用com对象初始化
Conn := TADOConnection.Create(nil);
rs := TADODataSet.Create(nil);
Conn.ConnectionString := ' Provider=SQLOLEDB.1;Password=yourpassword; '
+' Persist Security Info=True;User ID=yourusername;Initial Catalog=yourdatabase;Data Source=(local)';
rs.Connection := Conn;
Conn.Connected := true; rs.CommandText := 'select * from table1';
Conn.Connected := true;
rs.Open; vResult := Recordset.Fields.Item['field1'].Value;//这里要是能把对象传回去就好了 rs.Close;
rs.Free;
Conn.Free;
CoUnInitialize;
end;客户端:
var coDBServer: IcoDBServer; vTemp: OleVariant;
begin
CorbaInitialize;
coDBServer := TcoDBServerCorbaFactory.CreateInstance('coDBServer');
coDBServer.getDate(vTemp);
Edit1.Text := vTemp;
end;//创建的对象实例能不能以某种数据类型保存,传递,然后动态创建并恢复数据?
procedure TcoDBServer.getDate(var vResult: OleVariant);
var Conn: TADOConnection; rs: TmyADODataSet; rsp: TDataSetProvider;
begin
CoInitialize( nil );//使用com对象初始化
Conn := TADOConnection.Create(nil);
rs := TADODataSet.Create(nil);
Conn.ConnectionString := ' Provider=SQLOLEDB.1;Password=yourpassword; '
+' Persist Security Info=True;User ID=yourusername;Initial Catalog=yourdatabase;Data Source=(local)';
rs.Connection := Conn;
Conn.Connected := true; rs.CommandText := 'select * from table1';
Conn.Connected := true;
rs.Open; vResult := Recordset.Fields.Item['field1'].Value;//这里要是能把对象传回去就好了 rs.Close;
rs.Free;
Conn.Free;
CoUnInitialize;
end;客户端:
var coDBServer: IcoDBServer; vTemp: OleVariant;
begin
CorbaInitialize;
coDBServer := TcoDBServerCorbaFactory.CreateInstance('coDBServer');
coDBServer.getDate(vTemp);
Edit1.Text := vTemp;
end;//创建的对象实例能不能以某种数据类型保存,传递,然后动态创建并恢复数据?
解决方案 »
- 请问下adoquery查出的数据如何用字符串数组获取
- 问一个产品的工艺检测项目的存储方式,是数据库还是INI好点
- ★听说今天是小龙淫的生日,放分祝贺 嘿嘿
- 100%送分!!!非常简单的问题:连接ORACLE 数据库问题++++++++++++++++++++++++++++++++++
- 新手的一个DBGRID的小小的问题。
- 问一个语法问题,下面这句VB语言转化为DELPHI应该是什么?
- 菜鳥問題!高手支招!delphi剛入門!
- 用delphi實現取color
- 谁能做这个软件?????
- 各位老大,软件的评估版叫什么,"Version 1.0 beta"??
- 初学者碰到的问题:往adoquery中何如添加多行的sql语句
- 用corba,客户端调用服务器一个接口的方法,创建一个TADODataSet记录集,客户端怎样获取这个记录集?【100分】
function TRDSAppServer.Get_Employee: _Recordset;
var
ConnStr: WideString;
CMD : _command;
vRecsAffected, vParams: OleVariant;
aConnection: _Connection;
begin
ConnStr := 'FILE NAME=' + DataLinkDir + 'DBDEMOS.UDL';
aConnection := CoConnection.Create;
aConnection.ConnectionString := ConnStr;
aConnection.Open(ConnStr, '', '',-1);
CMD := CoCommand.Create;
CMD.Set_ActiveConnection(aConnection);
CMD.CommandType := adCmdText;
CMD.CommandText := 'SELECT * FROM Employee WHERE EmpNo = :EmpNo';
Result := CoRecordSet.Create;
Result.CursorLocation := adUseClient;
Result.CursorType := adOpenForwardOnly;
Result.LockType := adLockOptimistic;
vRecsAffected := -1;
vParams := CMD.CreateParameter('EmpNo', adInteger, adParamInput, 0, 4);
Result := CMD.Execute(vRecsAffected,vParams,adCmdText);
end;
不知道我这种想法是否正确。