C# 无效的列名称SQL

C# 无效的列名称SQL,c#,sql,C#,Sql,我浪费了几个小时试图找出我的代码中的错误。在表中添加新列之前,这是可以的,但是在那之后,每当我提交表单时,它都会给我一个错误 列名无效。[节点名称(如果有)=,列名=用户ID] 这是我的密码: con.Open(); string query = "INSERT INTO PlayerTable (username ,password, picture, scoreL1, scoreL2, scoreL3, userID) VALUES ('" + @userName + "','" +

我浪费了几个小时试图找出我的代码中的错误。在表中添加新列之前,这是可以的,但是在那之后,每当我提交表单时,它都会给我一个错误

列名无效。[节点名称(如果有)=,列名=用户ID]

这是我的密码:

con.Open();  
string query = "INSERT INTO PlayerTable 
(username ,password, picture, scoreL1, scoreL2, scoreL3, userID) 
VALUES
('" + @userName + "','" + @password + "',@picture," + @score1 
+ "," + @score2 + "," + @score3 + "," + @num + ")";

                cmd.Parameters.AddWithValue("@picture", a);
                cmd.Parameters.AddWithValue("@username", userName);
                cmd.Parameters.AddWithValue("@password", password);
                cmd.Parameters.AddWithValue("@scoreL1", score1);
                cmd.Parameters.AddWithValue("@scoreL2", score2);
                cmd.Parameters.AddWithValue("@scoreL3", score3);
                cmd.Parameters.AddWithValue("@userID", num);
                cmd = new SqlCeCommand(query, con);
                cmd.ExecuteNonQuery();
难道不是:

string query =
  "INSERT INTO PlayerTable
   (username, password, picture, scoreL1, scoreL2, scoreL3, userID)
   VALUES(@userName, @password, @picture, @scoreL1, @scoreL2, @scoreL3, @userID)";
这不是
@score1
,而是
@score1
,其他的也一样

编辑

实例化新的
SqlCeCommand
时:

cmd = new SqlCeCommand(query, con);
您基本上删除了前面设置的参数。
将实例化移到参数指定上方:

cmd = new SqlCeCommand(query, con);
cmd.Parameters.AddWithValue("@picture", a);
cmd.Parameters.AddWithValue("@username", userName);
cmd.Parameters.AddWithValue("@password", password);
cmd.Parameters.AddWithValue("@scoreL1", score1);
cmd.Parameters.AddWithValue("@scoreL2", score2);
cmd.Parameters.AddWithValue("@scoreL3", score3);
cmd.Parameters.AddWithValue("@userID", num);
cmd.ExecuteNonQuery();
难道不是:

string query =
  "INSERT INTO PlayerTable
   (username, password, picture, scoreL1, scoreL2, scoreL3, userID)
   VALUES(@userName, @password, @picture, @scoreL1, @scoreL2, @scoreL3, @userID)";
这不是
@score1
,而是
@score1
,其他的也一样

编辑

实例化新的
SqlCeCommand
时:

cmd = new SqlCeCommand(query, con);
您基本上删除了前面设置的参数。
将实例化移到参数指定上方:

cmd = new SqlCeCommand(query, con);
cmd.Parameters.AddWithValue("@picture", a);
cmd.Parameters.AddWithValue("@username", userName);
cmd.Parameters.AddWithValue("@password", password);
cmd.Parameters.AddWithValue("@scoreL1", score1);
cmd.Parameters.AddWithValue("@scoreL2", score2);
cmd.Parameters.AddWithValue("@scoreL3", score3);
cmd.Parameters.AddWithValue("@userID", num);
cmd.ExecuteNonQuery();
难道不是:

string query =
  "INSERT INTO PlayerTable
   (username, password, picture, scoreL1, scoreL2, scoreL3, userID)
   VALUES(@userName, @password, @picture, @scoreL1, @scoreL2, @scoreL3, @userID)";
这不是
@score1
,而是
@score1
,其他的也一样

编辑

实例化新的
SqlCeCommand
时:

cmd = new SqlCeCommand(query, con);
您基本上删除了前面设置的参数。
将实例化移到参数指定上方:

cmd = new SqlCeCommand(query, con);
cmd.Parameters.AddWithValue("@picture", a);
cmd.Parameters.AddWithValue("@username", userName);
cmd.Parameters.AddWithValue("@password", password);
cmd.Parameters.AddWithValue("@scoreL1", score1);
cmd.Parameters.AddWithValue("@scoreL2", score2);
cmd.Parameters.AddWithValue("@scoreL3", score3);
cmd.Parameters.AddWithValue("@userID", num);
cmd.ExecuteNonQuery();
难道不是:

string query =
  "INSERT INTO PlayerTable
   (username, password, picture, scoreL1, scoreL2, scoreL3, userID)
   VALUES(@userName, @password, @picture, @scoreL1, @scoreL2, @scoreL3, @userID)";
这不是
@score1
,而是
@score1
,其他的也一样

编辑

实例化新的
SqlCeCommand
时:

cmd = new SqlCeCommand(query, con);
您基本上删除了前面设置的参数。
将实例化移到参数指定上方:

cmd = new SqlCeCommand(query, con);
cmd.Parameters.AddWithValue("@picture", a);
cmd.Parameters.AddWithValue("@username", userName);
cmd.Parameters.AddWithValue("@password", password);
cmd.Parameters.AddWithValue("@scoreL1", score1);
cmd.Parameters.AddWithValue("@scoreL2", score2);
cmd.Parameters.AddWithValue("@scoreL3", score3);
cmd.Parameters.AddWithValue("@userID", num);
cmd.ExecuteNonQuery();

您不应在查询参数周围加引号:

string query = "INSERT INTO PlayerTable 
 (username ,password, picture, scoreL1, scoreL2, scoreL3, userID) 
 VALUES(@userName, @password, @picture, @scoreL1, @scoreL2, @scoreL3, @userID )";

此外,您需要确保参数名称与@values匹配。

您不应该在查询参数周围加引号:

string query = "INSERT INTO PlayerTable 
 (username ,password, picture, scoreL1, scoreL2, scoreL3, userID) 
 VALUES(@userName, @password, @picture, @scoreL1, @scoreL2, @scoreL3, @userID )";

此外,您需要确保参数名称与@values匹配。

您不应该在查询参数周围加引号:

string query = "INSERT INTO PlayerTable 
 (username ,password, picture, scoreL1, scoreL2, scoreL3, userID) 
 VALUES(@userName, @password, @picture, @scoreL1, @scoreL2, @scoreL3, @userID )";

此外,您需要确保参数名称与@values匹配。

您不应该在查询参数周围加引号:

string query = "INSERT INTO PlayerTable 
 (username ,password, picture, scoreL1, scoreL2, scoreL3, userID) 
 VALUES(@userName, @password, @picture, @scoreL1, @scoreL2, @scoreL3, @userID )";

此外,您需要确保参数名称与@values匹配。

+1。另一件重要的事情是不要用单引号括住变量名。@user3624655:数据库表中是否有列
userID
?能否显示表的布局/设计/脚本?+1。另一件重要的事情是不要用单引号括住变量名。@user3624655:数据库表中是否有列
userID
?能否显示表的布局/设计/脚本?+1。另一件重要的事情是不要用单引号括住变量名。@user3624655:数据库表中是否有列
userID
?能否显示表的布局/设计/脚本?+1。另一件重要的事情是不要将变量名用单引号括起来。@user3624655:数据库表中是否有列
userID
?能否显示表的布局/设计/脚本?