更新群组时出错。必须声明标量变量“@SubnameWHERE”...为什么会出现此错误.....
protected void cmdUpdate_Click(object sender, EventArgs e)
{
string updateSQL;
updateSQL = "UPDATE tblnewgroup SET ";
updateSQL += "Groupname=@Groupname, ";
updateSQL += "Slno=@Slno, Subname=@Subname";
updateSQL += "WHERE Groupno=@Groupno_original";
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(updateSQL, con);
cmd.Parameters.AddWithValue("@Groupname", txtgname.Text);
cmd.Parameters.AddWithValue("@Slno", txtsl.Text);
cmd.Parameters.AddWithValue("@Subname", txtsn.Text);
cmd.Parameters.AddWithValue("@Groupno_original", lstAuthor.SelectedItem.Value);
int updated = 0;
try
{
con.Open();
updated = cmd.ExecuteNonQuery();
lblResults.Text = updated.ToString() + " record updated.";
}
catch (Exception err)
{
lblResults.Text = "Error updating Group. ";
lblResults.Text += err.Message;
}
finally
{
con.Close();
}
if (updated > 0)
{
FillAuthorList();
}
}
答案 0 :(得分:2)
Subname=@Subname
更改您的
updateSQL += "Slno=@Slno, Subname=@Subname";
到
updateSQL += "Slno=@Slno, Subname=@Subname ";
作为更好的可视化,您可以像使用它一样使用
string updateSQL = @"UPDATE tblnewgroup
SET Groupname=@Groupname, Slno=@Slno, Subname=@Subname
WHERE Groupno=@Groupno_original";
此外,您应该使用using
块来处置您的SqlConnection
喜欢;
using(SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
updated = cmd.ExecuteNonQuery();
...
}
答案 1 :(得分:2)
正如Soner所说 - 你的sql无效 -
updateSQL += "Slno=@Slno, Subname=@Subname";
updateSQL += "WHERE Groupno=@Groupno_original";
这两行最终将为...... @SubnameWHERE Groupno=
....
这就是你的问题!
答案 2 :(得分:1)
问题:您已合并参数@Subname
和WHERE
条款。
解决方案:您需要在参数space
和@Subname
子句之间提供WHERE
替换此
updateSQL += "Slno=@Slno, Subname=@Subname";
有了这个:
updateSQL += "Slno=@Slno, Subname=@Subname ";
答案 3 :(得分:1)
只需更改
updateSQL += "WHERE Groupno=@Groupno_original";
到
updateSQL += " WHERE Groupno=@Groupno_original";
提示:构造此类sql命令时,始终在每个字符串部分的开头放置一个空格。