繁体   English   中英

无效的列名SQL

[英]Invalid column name SQL

我浪费了很多时间试图找出我的代码中不正确的地方。 在表中添加新列之前,可以,但是此后,每当我提交表单时,都会给我一个错误

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

这是我的代码:

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而是@scoreL1 ,其他的都一样。

编辑

实例化新的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 )";

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM