错误:必须声明标量变量“@data”

时间:2012-05-29 09:20:50

标签: asp.net

执行到达cmd.ExecuteNonQuery()时出现错误,说明必须声明标量变量:

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = Connection;
cmd.CommandTimeout = 0;

string commandText = "update groups set subjectline ='" +    txtSubjectLine.Text + "',data= @data where groupid = " + ddlGroup.SelectedItem.Value + " ";
cmd.CommandText = commandText;
cmd.CommandType = CommandType.Text;

cmd.Parameters.Add("@Data",OleDbType.VarBinary);
cmd.Parameters["@Data"].Value = binarydata;               
cmd.ExecuteNonQuery();

2 个答案:

答案 0 :(得分:4)

替换

string commandText = "update groups set subjectline ='" +    txtSubjectLine.Text + "',data= @data where groupid = " + ddlGroup.SelectedItem.Value + " ";

string commandText = "update groups set subjectline ='" +    txtSubjectLine.Text + "',data= ? where groupid = " + ddlGroup.SelectedItem.Value + " ";

即将“@data”替换为“?”在命令文本中。这是使用OleDbCommand指定参数占位符的方法。


这是编辑过的原文:

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = Connection;
cmd.CommandTimeout = 0;

cmd.CommandText = "update groups set subjectline ='" + txtSubjectLine.Text + "', data = ? where groupid = " + ddlGroupSelectedItem.Value;
cmd.CommandType = CommandType.Text;

cmd.Parameters.Add("p1", OleDbType.VarBinary);
cmd.Parameters["p1"].Value = binarydata;

cmd.ExecuteNonQuery();

答案 1 :(得分:0)

此链接显示如何使用.Write

将binarydata更新为表格的已接受答案

http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/dc1b053d-f0d5-48f8-ad82-fb6d96d27f80

如果这不能解决您的问题,请继续阅读以下内容:

你使用变量@data而你声明变量@Data,两者都是不同的情况。

在某些情况下,变量名称在TSQL中可能区分大小写,例如,如果使用区分大小写的排序规则安装MS Sql server,则表,列,变量名称将区分大小写,即使数据库具有不区分大小写的排序规则。

请参阅以下链接以获取更多详细信息。

Case sensitive variables in SQL Server

Is SQL syntax case sensitive?