【问题标题】:Cannot call methods on nvarchar无法在 nvarchar 上调用方法
【发布时间】:2012-04-27 07:33:27
【问题描述】:

我在我的 asp.net 应用程序中使用的简单 SELECT 语句有一个奇怪的问题。我使用 MSSQL 2008。

此语句有效:

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

然而,这一行抛出“Cannot call methods on nvarchar.

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 ";

这里有更多代码,它停在最后一行

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();

【问题讨论】:

  • 您能否发布更完整的代码示例,包括您如何将查询发送到 SQL 中?
  • 你有一个错字 - User.user_surname 应该是 Users.user_surname
  • 谢谢克里斯。现在可以了。寻找解决方案又浪费了一个小时:D
  • 有人对你投了反对票,所以当他们发表评论解释时,我让你支持。我们都可以打错字,所以看起来很苛刻。
  • 哈哈,我遇到了同样的错误,但由于它只是一个错字而忽略了解决方案。但是,我再次查看了我的查询,结果发现,我还在“用户”中留下了一个“s”。如果不是因为这篇文章,我永远不会检查拼写错误。非常感谢!

标签: c# asp.net sql-server-2008 tsql


【解决方案1】:

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

所以 [User].user_surname 等

正如 Chris 所说,错字将 User.user_surname 更改为 Users.user_surname。

我猜是未定界的 [User] 问题导致了奇怪的错误

【讨论】:

  • 您没有使用用户。您正在使用用户,所以在第二个中看起来像是一个错字。将其更改为用户
  • 我仍然认为您遇到了该错误,因为它是未定界的。将其更改为另一个拼写错误,您可能会得到不同的错误。我可能是错的。我经常这样! :)
猜你喜欢
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 2018-11-22
  • 2016-08-21
相关资源
最近更新 更多