2011-05-18 108 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.