Sql server 如何从使用“object”进行的查询中恢复数据;ADODB.Command";?

Sql server 如何从使用“object”进行的查询中恢复数据;ADODB.Command";?,sql-server,delphi,object,com,Sql Server,Delphi,Object,Com,基于下面的代码,我可以使用动态对象“ADODB.Command”检索查询结果吗 此单元将始终使用存储过程,并且将使用的参数类型为输入和输出类型 使用Delphi 7+SQL Server Express 2012 单位图书馆; 接口 使用 ComObj,变体; 函数ADOStart(strConexao:AnsiString):布尔; 函数ADOStop:Boolean; 函数ADOConfigParams(ParamName:string;ParamType,ParamIO, ParamSiz

基于下面的代码,我可以使用动态对象“ADODB.Command”检索查询结果吗

此单元将始终使用存储过程,并且将使用的参数类型为输入和输出类型

使用Delphi 7+SQL Server Express 2012

单位图书馆;
接口
使用
ComObj,变体;
函数ADOStart(strConexao:AnsiString):布尔;
函数ADOStop:Boolean;
函数ADOConfigParams(ParamName:string;ParamType,ParamIO,
ParamSize:integer;Val:variant;CanClear:Boolean=False):Boolean;
函数ADOSetParamVal(ParamName:string;val:variant):布尔;
函数ADOGetParamVal(ParamName:string):变量;
函数ADOGetValue(_inde:integer):变量;
函数ADOExecute(procname:string):布尔值;
常数
{Param数据类型}
adInteger=3;
adSingle=4;
adDate=7;
adBoolean=11;
adVarBites=16;
adUnsignedTinyInt=17;
adDateTime=135;
advarChar=200;
{参数方向}
adParamInput=1;
adParamOutput=2;
adParamReturnValue=4;
{命令类型}
adCmdText=1;
adCmdTable=2;
adCmdStoredProc=4;
adCmdTableDirect=512;
adCmdFile=256;
实施
变量
ADODB连接,
ADORecordSet,
ADO命令:变体;
函数ADOStart(strConexao:AnsiString):布尔;
开始
尝试
ADODBConnection:=CreateOleObject('ADODB.Connection');
ADODBConnection.ConnectionString:=strConexao;
ADODBConnection.Open;
ADORecordSet:=CreateOLEObject('ADODB.Recordset');
ADOCommand:=CreateOLEObject('ADODB.Command');
ADOCommand.ActiveConnection:=ADODBConnection;
ADOCommand.CommandText:=“过程”;
ADOCommand.CommandType:=adCmdStoredProc;
结果:=真;
除了
开始
如果不是(VarIsEmpty(ADODBConnection)),则
开始
ADODBConnection.Close;
ADODBConnection:=未分配;
结束;
如果不是(VarIsEmpty(ADOCommand)),则
ADO命令:=未分配;
如果不是(变量集(ADORecordSet)),则
ADORecordSet:=未分配;
结果:=假;
结束;
结束;
结束;
函数ADOStop:Boolean;
开始
尝试
如果不是(VarIsEmpty(ADODBConnection)),则
ADODBConnection.Close;
ADODBConnection:=未分配;
ADORecordSet:=未分配;
ADO命令:=未分配;
结果:=真;
除了
结果:=假;
结束;
结束;
函数ADOConfigParams(ParamName:string;ParamType,ParamIO,
ParamSize:integer;Val:variant;CanClear:Boolean):Boolean;
变量
_W:整数;
DerivedParamSize:整数;
开始
尝试
案例类型
adInteger:DerivedParamSize:=4;
adSingle:DerivedParamSize:=4;
adDate:DerivedParamSize:=8;
adBoolean:DerivedParamSize:=1;
adVarBites:DerivedParamSize:=1;
adUnsignedTinyInt:DerivedParamSize:=1;
adDateTime:DerivedParamSize:=8;
advarChar:DerivedParamSize:=ParamSize;
结束;
如果是癌症的话
对于_W:=0到(ADOCommand.parameters.count)-1 do
ADOCommand.parameters.delete(0);
ADOCommand.parameters.append(
ADOCommand.createparameter(ParamName、ParamType、ParamIO、,
派生参数(大小,Val));
结果:=真;
除了
结果:=假;
结束;
结束;
函数ADOSetParamVal(ParamName:string;val:variant):布尔;
开始
尝试
ADOCommand.Parameters[ParamName]。值:=val;
结果:=真;
除了
结果:=假;
结束;
结束;
函数ADOGetParamVal(ParamName:string):变量;
开始
尝试
结果:=ADOCommand.Parameters[ParamName].Value;
除了
结果:=varEmpty;
结束;
结束;
函数ADOExecute(procname:string):布尔值;
开始
尝试
ADOCommand.CommandText:=procname;
ADOCommand.CommandType:=adCmdStoredProc;
ADORecordSet:=ADOCommand.Execute;
结果:=真;
除了
结果:=假;
结束;
结束;
函数ADOGetValue(_inde:integer):变量;
开始

结果:=ADORecordSet.Fields.Item[\u inde].Value;{设法解决了我存储过程中的这个问题。这个函数可以检索返回的数据

函数ADOGetParamVal(ParamName:string):变量;
开始
尝试
结果:=ADOCommand.Parameters[ParamName].Value;
除了
结果:=varEmpty;
结束;

结束;

我很好奇,当ADO被很好地包装在Delphi中时,为什么您要创建自己的OLE ADO?您使用的是什么版本的Delphi?对不起,我是社区中的新手。我想动态对象,以避免使用Emcapsularda类。感谢您的关注。事实上,代码可以很容易地翻译到其他pascal语言,例如例如InnoSetup。只是因为我习惯于使用内置ADO组件,所以回答起来比较困难。使用Delphi 7和purpose并创建我自己的封装类。你可以发布你自己问题的答案以及解决问题所需的一切。