求助!使用Update功能出现:必须声明标量变量@Id

KyKiske22 2016-08-01 01:37:44
这是一个WinForm项目:具体的三层如下

Dao层 SqlHelper.cs:
public class SqlHelper
{
public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
{
String connStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
return cmd.ExecuteNonQuery();
}
}



服务层 Service.cs :
public static int dataUpdate(int i,params Object[] o)
{
String strsql = "Update Device set TName = @TName Where Id = @Id ";
SqlHelper.ExecuteNonQuery(strsql,
new SqlParameter("@Id", i),
new SqlParameter("@TName", o[0]));
int result = SqlHelper.ExecuteNonQuery(strsql);
return result;
}

主窗体修改按钮:
private void btnUpdate_Click(object sender, EventArgs e)
{
MessageBox.Show(pdtp.Value.ToString("yyyy/MM/dd"));
Service.dataUpdate(
Convert.ToInt32(textBox1.Text),
NameText.Text
);
}
问!服务层的内容使用Insert就没问题,为什么update就报错了?
...全文
174 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
KyKiske22 2016-08-03
  • 打赏
  • 举报
回复
已经解决了,谢谢
MoshangYanYu 2016-08-01
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
引用
SqlHelper.ExecuteNonQuery(strsql, new SqlParameter("@Id", i), new SqlParameter("@TName", o[0])); int result = SqlHelper.ExecuteNonQuery(strsql);
这是想干嘛?
同问。。。直接int result =SqlHelper.ExecuteNonQuery(strsql, new SqlParameter("@Id", i), new SqlParameter("@TName", o[0])); 不就可以了吗?下面为什么还要再执行一遍没有SqlParameter的方法?
  • 打赏
  • 举报
回复
重复执行了两次sql,一次有参,一次无参
Poopaye 2016-08-01
  • 打赏
  • 举报
回复
引用
SqlHelper.ExecuteNonQuery(strsql, new SqlParameter("@Id", i), new SqlParameter("@TName", o[0])); int result = SqlHelper.ExecuteNonQuery(strsql);
这是想干嘛?

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧