2012-04-15 48 views
3

我在我的asp.net应用程序中使用简单的SELECT语句有奇怪的问题。我与MSSQL工作,2008年无法在nvarchar上调用方法

此语句的工作原理:

SelectSQL = "SELECT user_id, user_name, user_surname, user_code FROM Users WHERE user_group = '" + drop.SelectedItem.Value + "'"; 

然而,这条线抛出

SelectSQL = "SELECT COUNT(DISTINCT Equations.eq_id) AS pocet_prikladu, Users.user_name, User.user_surname FROM Users LEFT JOIN Equations ON (Users.user_id = Equations.eq_user_id) WHERE Users.user_code = '" + drop.SelectedItem.Value + "' GROUP BY Users.user_id, Users.user_name, User.user_surname "; 

这里更多的代码,它停止 “不能调用nvarchar的方法”。在最后一行

public void FillTable(Table tab, DropDownList drop)  //naplneni tabulky 
    { 
     SqlConnection pripojeni = new SqlConnection(connectionString); 
     string SelectSQL = ""; 
     if (action == "groups") 
     { 
      SelectSQL = "SELECT user_id, user_name, user_surname, user_code FROM Users WHERE user_group = '" + drop.SelectedItem.Value + "'"; 
     } 
     else 
     { 
      SelectSQL = "SELECT COUNT(DISTINCT Equations.eq_id) AS pocet_prikladu, Users.user_name, User.user_surname FROM Users LEFT JOIN Equations ON (Users.user_id = Equations.eq_user_id) WHERE Users.user_code = '" + drop.SelectedItem.Value + "' GROUP BY Users.user_id, Users.user_name, User.user_surname "; 
     } 
     try 
     { 
      SqlCommand prikaz = new SqlCommand(SelectSQL, pripojeni); 
      pripojeni.Open(); 
      SqlDataReader vysledky = prikaz.ExecuteReader(); 
+0

能否请您发布更完整的代码示例,包括你如何将查询发送到SQL? – jklemmack 2012-04-15 21:22:07

+3

你有一个错字 - User.user_surname应该是Users.user_surname – 2012-04-15 21:27:10

+0

谢谢克里斯。它现在有效。通过寻找解决方案花费的另一个浪费时间:D – polohy 2012-04-15 21:29:45

回答

4

您可能需要分隔它用户为[用户]。用户是保留关键字。

因此[用户] .user_surname等

而且克里斯说错字变化User.user_surname到Users.user_surname。

我猜,未定[用户]问题导致了奇怪的错误

+0

好的,但为什么第一个SelectSQL在没有[user]的情况下工作? – polohy 2012-04-15 21:27:48

+0

您未使用用户。你正在使用用户,所以看起来像第二个错字。更改为用户 – GraemeMiller 2012-04-15 21:28:36

+0

克里斯是正确的:D – polohy 2012-04-15 21:30:47