check select语句在c#.net中是否有效

时间:2010-06-02 13:16:37

标签: sql-server-2000

我想检查select语句(字符串)在c#.net中是否有效,如果select语句是正确的则检索数据并填充下拉列表框,否则下拉列表应为空

2 个答案:

答案 0 :(得分:2)

select语句多久会无效?看起来像执行SQL的简单try / catch块就足够了。

顺便说一句,我希望你没有制作一个应用程序,允许有人在一个盒子里输入任意的SQL然后执行...

答案 1 :(得分:2)

涵盖大多数方案的一种方法是使用SET FMTONLY ON

执行SQL

e.g。

SET FMTONLY ON;
SELECT SomeField FROM ExampleQuery

来自BOL,SET FMTONLY

  

仅返回客户端的元数据。   可以用来测试格式   没有实际运行的响应   query.query。

如果查询无效,则会出错。您还可以检查结果以确定返回的结果集的模式是什么(即没有模式=不是SELECT语句)。

<强>更新 一般而言,在处理要防止SQL注入的SQL时,您还应该考虑其他事项:

  1. 避免使用动态sql(将用户输入的值连接到要执行的SQL字符串中)。请改用参数化的SQL。
  2. 将查询封装为嵌套查询。 e.g。

    SELECT * FROM(从ADynamicQueryThatsBeenGenerated中选择一些东西)x

  3. 因此,如果查询包含多个命令,则会导致错误。即,当封装为嵌套查询时,这将导致无效查询:

    SELECT SomethingFrom FROM MyTable;TRUNCATE TABLE MyTable