0

无法将类型“object”隐式转换为“System.Data.SqlClient.SqlCommand”。存在显式转换(您是否缺少演员表?)

创建用户控件时出现此错误

它在这段代码中。

  protected void gvDetails_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int Slno = Convert.ToInt32(gvDetails.DataKeys[e.RowIndex].Value.ToString());
var ProductNum = gvDetails.DataKeys[e.RowIndex].Values["ProductNumber"].ToString();
TextBox txtShortDesc = (TextBox)gvDetails.Rows[e.RowIndex].FindControl("ShortDesc");
SqlCommand cmd= SqlHelper.ExecuteScalar(GlobalSettings.DbDSN, CommandType.Text,"UPDATE sydShortDesc set ShortDesc='"+ txtShortDesc.Text+ " ' WHERE ProductNumber='"+ ProductNum +"'  ");
cmd.ExecuteNonQuery();
lblresult.ForeColor = Color.Green;
lblresult.Text = username + " Details Updated successfully";
gvDetails.EditIndex = -1;
BindEmployeeDetails();
}
4

2 回答 2

0

那么大概你的SqlHelper.ExecuteScalar方法被声明为返回object,而不是SqlCommand。实际上,我不希望它返回SqlCommand- 我希望它返回执行给定查询的结果。我怀疑你一开始就不想打电话ExecuteScalar

顺便说一句,您当前的代码容易受到SQL 注入攻击- 您应该使用参数化 SQL 而不是将值直接嵌入到 SQL 中。

于 2013-04-18T09:30:11.667 回答
0

从您的函数名称SqlHelper.ExecuteScalar看来,该函数执行命令并返回结果集,而不是新的SqlCommand。这就是您收到错误的原因。

其他几件事,您应该始终使用参数化查询来避免Sql Injection

于 2013-04-18T09:30:54.613 回答