有没有一种方法可以在调用之前检查操作是否有效
本文关键字:调用 检查 操作 有效 是否 一种 方法 有没有 | 更新日期: 2023-09-27 18:26:16
在调用之前,有没有一种方法可以找到该语句是否有效?例如,当您试图删除不存在的列时,或者当您试图删除由外键链接的记录时,您被禁止删除它。类似于单击分析(Ctrl+F5)按钮但从代码调用的操作。(理想情况下,可以使用命令类从C#代码调用它。)
类似的东西
Exec sp_canIdoIt("SQL statement").
而不实际调用语句"SQL语句"。
我做了一些谷歌搜索和
PARSE导致了完全不同的结果。
CTRL+F5快捷键没有多大帮助。
我真的希望能够调用数据库,并确保它不会给我返回错误。
您可以执行事务并回滚更改,但这仍然会返回错误。
我认为,也许,你的想法是错误的。
SqlException
可以用try-catch
块来处理或不处理。为什么不直接处理错误案例,而不是执行奇怪的psuedo逻辑来测试某个东西的有效性呢?您可以使用基于错误返回成功状态的函数。
如果您在connection.Open()
上获得SqlException
,则您的数据库不可访问。如果在提交查询时得到SqlException
,则该查询存在问题。只需处理这种情况,返回某种errorresult枚举,然后对其执行其他操作。
有一种方法,那就是使用NOEXEC。但是,不要把我的答案作为公认的答案,因为C Bauer的建议是正确的——在代码中捕捉这些异常并采取行动。这正是我们得到错误处理的原因。
但是,如果出于某种原因,您正在将SSMS Query Analyzer重新设计到自己的小应用程序中,那么这里有一篇关于NOEXEC的文章。
http://www.adathedev.co.uk/2010/07/validating-sql-query-programmatically.html
如何以编程方式检查(解析)TSQL语句的有效性?