【问题标题】:SqlCommand select from where issueSqlCommand 选择从哪里发出
【发布时间】:2013-07-15 20:45:53
【问题描述】:

我在下面得到了这段代码,应该:

Select column odjezd
From table stanice 
Order by odjezd
where akce=zakce.Text

SqlCommand combobox = new SqlCommand("SELECT odjezd FROM stanice 
                                      ORDER BY odjezd ASC 
                                      WHERE akce="+zakce.Text, spojeni);

它给了我这个错误:WHERE 附近的语法不正确。

有人可以改进我的代码吗? 提前致谢

【问题讨论】:

    标签: c# sql sql-server sqlcommand


    【解决方案1】:

    您的 ORDER BY 子句必须在最后,并且您在 WHERE 子句中的字符串周围缺少单引号。

    顺便说一句,您应该对命令文本使用参数而不是字符串操作,以防止 SQL 注入。

    var command = new SqlCommand("SELECT odjezd FROM stanice WHERE akce=@akce ORDER BY odjezd ASC", spojeni);
    command.Parameters.Add(new SqlParameter("@akce", zakce.Text));
    

    【讨论】:

      【解决方案2】:

      ORDER BY 必须坚持到最后......

      • 首次查询您的数据
      • 相应地订购后

      所以会变成这样:

      var command new SqlCommand("SELECT odjezd FROM stanice WHERE akce="
                                   + zakce.Text + " ORDER BY odjezd ASC", spojeni)
      

      【讨论】:

      • 而您应该始终使用参数化查询 - 不要像这样将 SQL 连接在一起 - 极易受到 SQL 注入攻击 ....
      【解决方案3】:

      请试试这个代码:

      SqlCommand combobox = new SqlCommand("SELECT odjezd FROM stanice WHERE akce='"+zakce.Text + "' ORDER BY odjezd ASC", spojeni);
      

      我希望它对你有用。

      ORDER BY
      

      必须最后。

      【讨论】:

        【解决方案4】:

        Where 子句位于 order by 之前

        【讨论】:

          【解决方案5】:

          ORDER BY 应该在 WHERE 之后,我相信您需要一个单引号来围绕您要搜索的内容。

          SqlCommand combobox = new SqlCommand("SELECT odjezd FROM stanice WHERE akce='"+zakce.Text + "' ORDER BY odjezd ASC", spojeni);
          

          【讨论】:

            【解决方案6】:

            您的语句排序不正确,可以在此处(在其他地方)找到一个方便的 SELECT 语句排序:http://msdn.microsoft.com/en-us/library/ms189499.aspx

            因此,在您的情况下,您可能希望这样订购您的陈述:

            SELECT odjezd 
            FROM stanice 
            WHERE ...
            ORDER BY odjezd ASC 
            

            正如 Woni 所指出的,如果您使用 SqlCommand.Parameters 来强制执行正确的数据类型并保护您免受潜在攻击,那会更好。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-08-05
              • 1970-01-01
              • 2016-05-18
              • 2015-10-24
              相关资源
              最近更新 更多