日期:2014-05-20  浏览次数:20507 次

100分求助!!指定的转换无效!!在线等...
下面的一段代码出现:
"System.InvalidCastException:   指定的转换无效。 "                
排错提示:
"当一个数字执行强制转换时,值必须是一个小于无限大的数字
确保源类型可以转换为目标类型 "

寻求帮助,马上给分,如果解释给大家解释很明白,我愿在加分!!

public   IList <Bbs_PostDetailsInfo>   GetPostDetails(string   postid)
{
        IList <Bbs_PostDetailsInfo>   postlist   =   new   List <Bbs_PostDetailsInfo> ();
        strSql   =   "SELECT   *   FROM   V_Bbs_PostDetails   WHERE   Post_Id= "   +   postid;
        sdr   =   GetDataReader(strSql);
        while   (sdr.Read())
        {
                        postlist.Add(new   Bbs_PostDetailsInfo(sdr.GetInt32(0),   sdr.GetString(1),   sdr.GetString(2),   sdr.GetInt32(3),
                        sdr.GetString(4),   sdr.GetString(5),   sdr.GetDateTime(6),   sdr.GetInt32(7),   sdr.GetString(8),   sdr.GetDateTime(9),
                        sdr.GetString(10),   sdr.GetString(11),   sdr.GetString(12),   sdr.GetString(13),   sdr.GetString(14),   sdr.GetString(15),
                        sdr.GetInt32(16),   sdr.GetInt32(17),   sdr.GetInt32(18),   sdr.GetInt32(19),   sdr.GetInt32(20),   sdr.GetInt32(21),
                        sdr.GetString(22),   sdr.GetDateTime(23),   sdr.GetInt32(24),   sdr.GetInt32(25),   sdr.GetString(26),   sdr.GetInt32(27),   sdr.GetInt32(28),   sdr.GetInt32(29)));
        }
        sdr.Close();
        sdr.Dispose();
        return   postlist;
}

------解决方案--------------------
希望楼主早日得子
------解决方案--------------------
肯定是DBNULL引起的,查找转换成int的相关字段是否为null
------解决方案--------------------
见鬼了.只能用笨办法了. 每个字段的值都声明变量. 如 int i1 = dr.GetInt32(0); string s1 = dr.GetString(1); ............ 看到底哪里出错..
------解决方案--------------------
终于解决了 哈哈