执行到达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();
答案 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更新为表格的已接受答案如果这不能解决您的问题,请继续阅读以下内容:
你使用变量@data而你声明变量@Data,两者都是不同的情况。
在某些情况下,变量名称在TSQL中可能区分大小写,例如,如果使用区分大小写的排序规则安装MS Sql server,则表,列,变量名称将区分大小写,即使数据库具有不区分大小写的排序规则。
请参阅以下链接以获取更多详细信息。