有没有办法在调用之前检查操作是否有效?

时间:2014-10-10 13:46:47

标签: c# sql-server

有没有办法在调用之前查找语句是否有效?例如,当您尝试删除不存在的列时或者当您尝试删除由外键链接的记录时,您将被禁止删除它。某事比如点击Parse(Ctrl + F5)按钮但是从代码调用。 (理想情况下,可以使用command class从C#代码中调用它。)

这样的东西
Exec sp_canIdoIt("SQL statement").

没有实际调用语句“SQL语句”。

我做了一些谷歌搜索和

PARSE 导致完全不同的东西。

CTRL+F5快捷方式无济于事。

我真的希望能够调用数据库,并确保它不会给我一个错误。

2 个答案:

答案 0 :(得分:3)

您可以执行事务并回滚更改,但这仍然会返回错误。

我想,也许,你正在考虑这个错误。

使用SqlException块可以处理或取消处理try-catch。为什么不只是处理错误情况而不是执行奇怪的伪逻辑来测试某些东西的有效性?您可以根据错误返回成功状态。

如果SqlException上有connection.Open(),则您的数据库无法访问。如果在提交查询时收到SqlException,则查询存在问题。只需处理这种情况,返回某种错误结果枚举,并用它做其他事情。

答案 1 :(得分:2)

一种方式,并且使用NOEXEC。但是 - 不要将我的投票作为公认的答案,因为C Bauer建议的是正确的方法 - 在你的代码中捕获这些例外并采取行动。这就是我们处理错误的原因。

但是这是NOEXEC的一篇文章,如果由于某种原因,你将SSMS查询分析器重新设计到你自己的小应用程序中。

http://www.adathedev.co.uk/2010/07/validating-sql-query-programmatically.html

How can I programmatically check (parse) the validity of a TSQL statement?