【发布时间】:2018-03-15 08:57:53
【问题描述】:
我需要编写一个接收Sql-Query 作为参数的函数。我只想在它是 select 语句并返回数据时执行它。在其他情况下,如果参数包含删除、更新或截断,函数应该返回null。
【问题讨论】:
-
到目前为止你尝试了什么?
-
最好的解决方案是不编写这样的函数,而是使用像 EF 这样的 ORM 或像 Dapper 这样的微 ORM。
-
在没有解析语句的情况下不要尝试这个(这不是一件容易的事)。您正在尝试做的事情会在您的系统中打开一个巨大的安全漏洞。最好不要这样做。如果您必须拥有它,请让您的 DBA 创建一个对 DB 具有只读访问权限的帐户,并使用该帐户的连接运行查询。这样,DB 将拒绝您可能发送的任何更新。
-
ADO.NET 的 ExecuteReader 也适用于 INSERT/DELETE,如果没有结果,它将不返回任何内容
-
您可以使用只允许对所有表进行读取访问并且不允许您执行存储过程或写入/删除的登录吗?
标签: c# sql .net sql-server asp.net-mvc-4