我有以下代码用于执行返回多个结果集的sql存储过程,然后从流中读取此结果。对于背景信息:它将xml块作为字符串返回,然后将其转换为完整的xml。 它已经运行了一年多,但现在我有一个案例导致错误消息:操作被取消。调试器显示:Project x引发异常类EOleException,消息操作已取消。 我不知道是什么造成的。任何帮助或建议都会很棒。
const
adExecuteStream = $00000400; //Indicates that the results of a command execution should be returned as a stream.
var
objCmd, InputStream, XML, XSLT, Template, Processor, objConn, strmResults : Variant;
ATStreamClass : TMemoryStream;
Adapt : TStreamAdapter;
OutputStream: IStream;
objCmd := CreateOLEObject('ADODB.Command');
objCmd.ActiveConnection := dmABaasMock.dbRaAndm.ConnectionObject;
objCmd.CommandType := adCmdText;
objCmd.CommandText := <sp proc name with params>;
strmResults := CreateOLEObject('ADODB.Stream');
strmResults.Open;
objCmd.Properties['Output Stream'] := strmResults;
objCmd.Execute(EmptyParam, EmptyParam, adExecuteStream); // HERE COMES THE EXCEPTION
strmResults.Position := 0;
xmlMemo.text := strmResults.ReadText;
答案 0 :(得分:2)
如果没有看到更多内容,很难猜到出了什么问题 您可以采取三项措施来获取更多调试信息:
答案 1 :(得分:1)
我最近在连接到ADO时遇到了一些奇怪的错误消息,并且没有正确的连接字符串 我不是100%确定它是相同的错误消息(对不起,我忘了截取当时的截图),但如果是,那么这可能会有所帮助:
在.NET中,当您连接到ADO并使用集成安全性时,您可以指定Integrated Security="True"
,但使用本机提供程序(不仅在Delphi中,而且在任何本机环境中),您必须指定{ {1}}。
我遇到了这种情况,因为我正在摆弄连接字符串(从Delphi本机win32连接到我之前从.NET连接到的服务器),忘了复制相关部分。
- 的Jeroen