SQL错误:关键字“用户”附近的语法不正确

时间:2011-05-21 14:37:24

标签: c# sql sql-server tsql reserved-words

我使用SQL使用C#将数据插入SQL数据库文件,如下所示。

    String cs = System.Configuration.ConfigurationManager.ConnectionStrings["connection1"].ConnectionString;
    SqlConnection conn = new SqlConnection(cs);
    String sql = "INSERT INTO User (login, password, status) " + 
            "VALUES (@login, @password, @status)";
    SqlCommand comm = new SqlCommand(sql, conn);

    comm.Parameters.Add("@login", System.Data.SqlDbType.VarChar);
    comm.Parameters.Add("@password", System.Data.SqlDbType.VarChar);
    comm.Parameters.Add("@status", System.Data.SqlDbType.Bit);

    try
    {
        conn.Open();
        Console.WriteLine(conn.ToString());
        comm.ExecuteNonQuery();
        conn.Close();
        return true;
    }
    catch (Exception ex)
    {
        throw (ex);
    }
    finally
    {
        conn.Close();
    }

执行命令时出现以下错误。

  

关键字附近的语法不正确   '用户':INSERT INTO用户(登录,   密码,状态)VALUES(@login,   @password,@ status)

我该如何解决这个问题?

修改 遗漏了参数值..

    comm.Parameters["@login"].Value = this.Username;
    comm.Parameters["@password"].Value = this._password;
    comm.Parameters["@status"].Value = this.Status;

4 个答案:

答案 0 :(得分:71)

User is a reserved keyword,所以你必须使用方括号来明确表示你的意思是对象名为“用户”它,即使用[User]而不是{{1} }。

答案 1 :(得分:5)

用户是t-sql reserved keyword。用方括号括起来应该解决这个问题。 E.g插入[用户]

答案 2 :(得分:3)

对数据库运行查询。您可以使用declare sql关键字来定义变量并为其赋值。如果需要计算变量值,请在conn.Open中设置断点,然后使用locals窗口查看要传入的值。另一个可供您使用的工具是Sql Profiler。您可以开始跟踪然后运行您的程序。在您发布的代码运行后,您应该能够看到在配置文件中执行的查询。

当异常没有提供足够的信息时,所有这些都应该可以帮助你弄清楚你的sql有什么问题。

Sql Server Management Studio应该在sql语句中突出显示User关键字,很容易显示你需要括号,如下所示:[User]

答案 3 :(得分:0)

User是sql保留关键字。用方括号括起来应该可以解决这个问题。例如INSERT INTO [User]

轻松显示您需要用括号括起来,如下所示:[User]