SqlCommand从哪里选择问题

时间:2013-07-15 20:45:53

标签: c# sql sql-server sqlcommand

我的代码如下:

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附近的语法不正确。

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

6 个答案:

答案 0 :(得分:5)

您的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));

答案 1 :(得分:3)

ORDER BY必须持续......

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

所以它会变成:

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

答案 2 :(得分:2)

Where子句在命令之前

答案 3 :(得分:2)

请尝试以下代码:

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

我希望它适合你。

ORDER BY

必须走到最后。

答案 4 :(得分:1)

ORDER BY应该追踪WHERE,我相信你需要一个单一的引用,而不是你正在寻找的东西。

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

答案 5 :(得分:1)

你的陈述没有正确排序,可以在这里(在其他地方)找到一个方便的SELECT语句排序:http://msdn.microsoft.com/en-us/library/ms189499.aspx

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

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

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