【问题标题】:Get a strange "syntax error" when i'm trying to insert into a table [duplicate]当我尝试插入表时出现奇怪的“语法错误”[重复]
【发布时间】:2015-09-12 06:17:45
【问题描述】:

我正在尝试将新行添加到我拥有的表中。数据库是 MSSQL。我有一些其他的表工作得很好,但是当我做一个新的表时,我不能向它添加新的行。相反,我收到此错误消息:

“System.Data.dll 中出现‘System.Data.SqlClient.SqlException’类型的异常,但用户代码中没有处理

附加信息:关键字“用户”附近的语法不正确。”

我不知道为什么......

VS2013中的代码是这样的

        public void Update_Admin(User User)
    {
        using (SqlCommand cmd = new SqlCommand("INSERT INTO Admin (User, Password) VALUES (@User, @Password);", con))
        {
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.Add("@User", SqlDbType.VarChar).Value = User.UserName;
            cmd.Parameters.Add("@Password", SqlDbType.VarChar).Value = User.Password;
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
        }
    }

我知道传入的值是正确的。有谁知道哪里不对?

表格是这样的

CREATE TABLE [dbo].[Admin] (
[Id]       INT          IDENTITY (1, 1) NOT NULL,
[User]     VARCHAR (50) NULL,
[Password] VARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)

);

【问题讨论】:

  • 我不认为 mssql 对关键字感到不安;但是,以防万一您尝试在插入语句中将用户和密码括起来? “INSERT INTO Admin ([User], [Password])...”至少可以消除一个可能的原因
  • 您真的不应该以纯文本形式存储密码。它们应该加盐和散列。

标签: sql sql-server parameter-passing


【解决方案1】:

你必须转义User这个词:

using (SqlCommand cmd = new SqlCommand("INSERT INTO Admin ([User], Password) VALUES (@User, @Password);", con))

【讨论】:

  • 问题解决了!谢谢你!拯救了我的一天:P
  • 请标记为已回答。
  • 还可以,需要再等 9 分钟 :P Joao Leal 很快就能解决我的问题 :P
猜你喜欢
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
相关资源
最近更新 更多