delphi - 返回结果集后发生 SQL 错误时如何强制 TADOConnection 抛出异常
问题描述
TADOConnection 不希望在返回某些结果集后发生异常时抛出异常。例如:
ADOConnection1.Execute('SET NOCOUNT ON; SELECT 0; THROW 50000, ''Custom error'', 1;');
上面的代码不会抛出,因为有一个结果集由SELECT 0;
在这种情况下如何强制 TADOConnection 抛出异常?我无法避免返回结果集。我尝试过的事情:
- 处理
OnInfoMessage
事件,但它永远不会被触发。 - 检查 TADOConnection.Errors 属性,但那里没有错误。
我找到了一篇针对此问题的文章,但它涉及 .NET:
解决方案
我能够得到Custom Error
显示,使用TADOQuery
这样的:
var
t : integer;
begin
ADOQuery1.SQL.Text := 'SET NOCOUNT ON; SELECT 0; THROW 50000, ''Custom error'', 1;';
ADOQuery1.Open;
t := 0;
ADOQuery1.NextRecordset(t); // exception thrown here
end;
推荐阅读
- javascript - Counting rel number from html selectbox with jquery
- c# - 在对象内连接字符串?
- java - Api 与 Postman 一起工作,但不适用于 Android 应用程序
- filebeat - 我想排除 filebeat 读取的日志中的某些行,并且还想通过在 filebeat 中使用处理器来添加标签,但它不起作用
- elasticsearch - Exact-match, case-insensitive match without normalization in Elasticsearch 6.2
- ruby-on-rails - 如何修复 webpacker webpack-dev-server 不重新编译 scss 更改
- excel - Check if a worksheet contains any vba code
- c# - Why does a struct's field gets reset after the using statement?
- visual-studio - Update-Package -reinstall 不重新安装包
- node.js - 如何捕获来自 API {} 的空回复