2011-07-12 211 views
1

我打电话一GetSerialNo功能,但它显示像一些错误:不能将类型'decimal'隐式转换为'int'。一个显式转换存在(是否缺少强制转换?)

无法隐式转换类型“小数”到“廉政”。存在明确的转换(您是否缺少演员?)。

任何人都可以帮我解决这个问题吗?

下面是代码:提前

int slNo= GetSerailNo(keydata); 

private int GetSerailNo(String keydata) 
{ 

    SqlConnection con = new SqlConnection(@"server=Servername;database=DBNAME;uid=Username;pwd=Pwd;max pool size=250;Connect Timeout=0"); 
    con.Open(); 
    cmd = new SqlCommand("select isnull(max(slno)+1,1) from d001docs where source_keydata='" + keydata + "'", con); 
    dynamic no = cmd.ExecuteScalar(); 
    cmd.Dispose(); 
    con.Close(); 
    return no; 
} 

感谢

+1

为什么不复制并粘贴错误信息?人们,只需使用复制+粘贴! –

+2

你为什么使用'dynamic'? – Steven

回答

6
cmd.ExecuteScalar() 

返回一个小数,你需要转换你回到它之前为int ,例如:

return Convert.ToInt32(no); 
+0

IMO从很长时间'ExecuteScalar'返回'对象' – V4Vendetta

+0

该方法的返回类型是对象。然而,在这种情况下,运行时结果的实际类型是小数。 – Rik

+0

事实上,他在那个地方使用了动态 – V4Vendetta

相关问题