2011-05-18 110 views
5

我嘗試使用下面的代碼從我的數據庫中Score_Waarde值:指定的轉換無效

critid = critid_arr[teller2].ToString(); 

int scorehulp = 0; 
string userid = Session["userid"].ToString(); 

SqlCommand cmd3 = new SqlCommand("SELECT Score_Waarde FROM Score WHERE Crit_ID = '" + critid + "' AND User_ID = '" + userid + "' ", con); 
scorehulp = (int)cmd3.ExecuteScalar(); 

當我試圖運行此我得到以下錯誤:指定的轉換無效。 我不明白爲什麼我得到這個錯誤,因爲critiduserid正在給出正確的值。

+4

與調試器連接,什麼樣的價值*被*退換嗎?如果它的類型是不'System.Int32'那麼就會可怕死。(例如,如果它返回一個'long'或'字節'它不會工作。)最好的窪Ÿ查找/修復是爲了檢查檢查的假設;並在此處使用調試器將跳過20個步驟:-) – 2011-05-18 22:21:45

+0

您可以嘗試[Int32.Parse](http://msdn.microsoft.com/zh-cn/library/b3h1hf19.aspx)返回值的字符串表示形式。但要小心'空'值。 'Int32.Parse(cmd3.ExecuteScalar()。ToString())' – 2011-05-18 22:26:31

+1

你應該檢查返回值不是'DBNull'。 – 2011-05-18 22:27:09

回答

0

我最初得到這個錯誤(我的C#代碼

someobject.TotalItemCount = (Int32)dbManager.GetParameterValue("TotalRows")) 

其中TotalItemCountint型的,即使SP被罰款&被給予正確的結果。我擺脫這只是通過固定SP通過添加以下代碼

Set @TotalRows = @@rowcount.