Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 得到一个奇怪的答案;语法错误“;当我';I’我正试图插入一张表_Sql_Sql Server_Parameter Passing - Fatal编程技术网

Sql 得到一个奇怪的答案;语法错误“;当我';I’我正试图插入一张表

Sql 得到一个奇怪的答案;语法错误“;当我';I’我正试图插入一张表,sql,sql-server,parameter-passing,Sql,Sql Server,Parameter Passing,我正在尝试向现有的表中添加新行。该数据库是一个MSSQL。我有一些其他的表,一直工作得很好,但当我做了一个新的,我不能添加新行到它。相反,我收到以下错误消息: “System.Data.dll中发生类型为'System.Data.SqlClient.SqlException'的异常,但未在用户代码中处理 其他信息:关键字“User”附近的语法不正确。“ 我不知道为什么 VS2013中的代码如下所示 public void Update_Admin(User User) {

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

“System.Data.dll中发生类型为'System.Data.SqlClient.SqlException'的异常,但未在用户代码中处理

其他信息:关键字“User”附近的语法不正确。“

我不知道为什么

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)
我知道这些价值观是真实的。有人知道哪里不对吗

这张桌子看起来像这样

        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)

))

您必须转义
用户

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

您必须转义单词
User

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

问题解决了!Thx人!拯救了我的一天:P请按回答做标记。还可以,需要再等9分钟:P Joao Leal要快速解决我的问题:P问题解决了!Thx人!拯救了我的一天:P请按回答做标记。还可以,需要再等9分钟:P Joao Leal要快速解决我的问题:PI不认为mssql会因为关键字而心烦意乱;不过,为了以防万一,您是否尝试在insert语句中的用户和密码周围加上括号?“插入管理员([User],[Password])…”至少要消除一个可能的原因您确实不应该以纯文本形式存储密码。我不认为mssql会因为关键词而生气;不过,为了以防万一,您是否尝试在insert语句中的用户和密码周围加上括号?“插入管理员([User],[Password])…”至少要消除一个可能的原因您确实不应该以纯文本形式存储密码。它们应该用盐腌过,再剁碎。