我想检查select语句(字符串)在c#.net中是否有效,如果select语句是正确的则检索数据并填充下拉列表框,否则下拉列表应为空
答案 0 :(得分:2)
select语句多久会无效?看起来像执行SQL的简单try / catch块就足够了。
顺便说一句,我希望你没有制作一个应用程序,允许有人在一个盒子里输入任意的SQL然后执行...
答案 1 :(得分:2)
涵盖大多数方案的一种方法是使用SET FMTONLY ON
e.g。
SET FMTONLY ON;
SELECT SomeField FROM ExampleQuery
来自BOL,SET FMTONLY:
仅返回客户端的元数据。 可以用来测试格式 没有实际运行的响应 query.query。
如果查询无效,则会出错。您还可以检查结果以确定返回的结果集的模式是什么(即没有模式=不是SELECT语句)。
<强>更新强> 一般而言,在处理要防止SQL注入的SQL时,您还应该考虑其他事项:
将查询封装为嵌套查询。 e.g。
SELECT * FROM(从ADynamicQueryThatsBeenGenerated中选择一些东西)x
因此,如果查询包含多个命令,则会导致错误。即,当封装为嵌套查询时,这将导致无效查询:
SELECT SomethingFrom FROM MyTable;TRUNCATE TABLE MyTable