我浪费了几个小时试图找到代码中的错误。在表格中添加新列之前,没关系,但在此之后,每当我提交表单时,它都会给我一个错误
列名无效。 [节点名称(如果有)=,列名= 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();
答案 0 :(得分:3)
不应该是:
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();
答案 1 :(得分:0)
您不应该使用引号包围查询参数:
string query = "INSERT INTO PlayerTable
(username ,password, picture, scoreL1, scoreL2, scoreL3, userID)
VALUES(@userName, @password, @picture, @scoreL1, @scoreL2, @scoreL3, @userID )";
此外,您需要确保参数名称与@值匹配。