2013-04-18 64 views
0

不能將類型'object'隱式轉換爲'System.Data.SqlClient.SqlCommand'。在創建用戶控件將類型'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(); 
} 

回答

0

那麼想必你SqlHelper.ExecuteScalar方法聲明爲返回object,不SqlCommand。事實上,我不會期望它返回SqlCommand - 我希望它會返回執行給定查詢的結果。我懷疑你不想打電話給ExecuteScalar

作爲非常重要不談,您當前的代碼容易受到SQL injection attacks的影響 - 您應該使用參數化SQL,而不是直接將值嵌入到SQL中。

0

從函數名稱SqlHelper.ExecuteScalar看來,該函數執行該命令並返回結果集而不是新的 SqlCommand。這就是你遇到錯誤的原因。

夫婦的其他東西,你應該始終使用參數化查詢保存自己從Sql Injection

相關問題