![](/img/trans.png)
[英]Webservice convert from string to System.Data.SqlClient.SqlCommand
[英]convert type 'object' to 'System.Data.SqlClient.SqlCommand Error
无法将类型'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();
}
好吧,大概是您的SqlHelper.ExecuteScalar
方法被声明为返回object
,而不是SqlCommand
。 确实,我不希望它返回SqlCommand
希望它返回执行给定查询的结果。 我怀疑您不想一开始就调用ExecuteScalar
。
除了一个非常重要的方面 ,您当前的代码容易受到SQL注入攻击 -您应该使用参数化的SQL,而不是直接将值嵌入到SQL中。
从函数SqlHelper.ExecuteScalar
的名称看来,此函数将执行命令并返回结果集, 而不是新的 SqlCommand。 这就是为什么您得到错误。
另外,您应该始终使用参数化查询来使自己免受Sql Injection的攻击
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.