using (IDataReader dr = cmd.ExecuteReader())
                {
                    if (dr.Read())
                    {
                       
                 info.OnlinePrice =dr["OnlinePrice"] is DBNull? float.MinValue:(float)dr["OnlinePrice"];];
                       
                     }
                    dr.Close();
OnlinePrice 我数据库中定义是float类型的 调试没错误 运行时抛出错误 :指定的转换类型无效                                                                  确保列中的最大索引小于列表的大小
                                                                  确保源类型可以转化为目标类型 

解决方案 »

  1.   

    using (IDataReader dr = cmd.ExecuteReader()) 
                    { 
                        if (dr.Read()) 
                        { 
                          
                    info.OnlinePrice =dr["OnlinePrice"] is DBNull? float.MinValue:(float)dr["OnlinePrice"];]; 
                          
                        } 
                        dr.Close();
    看看绿色的两端是否能兼容?
    然后看看float.MinValue取出来什么啊
      

  2.   

    我刚把DBNULL去掉也不行 
           info.OnlinePrice = (float)dr["OnlinePrice];
        还是出现那个错误提示  
    看看绿色的两端是否能兼容? 这个不太懂 我刚学的
      

  3.   

     改成
     info.OnlinePrice = (decimal)dr["OnlinePrice]; 
    试试
      

  4.   

    不行 啊
    错误 1 无法将类型“decimal”隐式转换为“float”。存在一个显式转换(是否缺少强制转换?) F:\奥尔诗\prj\ARS.CN\ARS.CN.DAL\ProductDAL.cs 55 45 ARS.CN.DAL
      

  5.   

    using (IDataReader dr = cmd.ExecuteReader()) 
                    { 
                        if (dr.Read()) 
                        { 
                          
                    info.OnlinePrice =dr["OnlinePrice"].ToString()==""? float.MinValue:(float)dr["OnlinePrice"];]; 
                          
                        } 
                        dr.Close(); 
      

  6.   

    info.OnlinePrice =dr["OnlinePrice"] is DBNull.Value? float.MinValue:(float)dr["OnlinePrice"];];
      

  7.   

        info.OnlinePrice =dr["OnlinePrice"] is DBNull? float.MinValue:(float)dr["OnlinePrice"];]; 
    楼主看看你上面得语句,是不是最后的方括号里面是不是多了一个;
      

  8.   

    是多了一个 大意了 可是去掉了也是出错
    11L 的方法加个VALUE 调试出错 错误 1 “System.DBNull.Value”是“字段”,但此处被当做“类型”来使用
      

  9.   

    修改了
    info.OnlinePrice =dr["OnlinePrice"] ==DBNull.Value? 
    float.MinValue:(float)dr["OnlinePrice"]];
      

  10.   

    info.OnlinePrice =dr["OnlinePrice"] ==DBNull.Value? 
    float.MinValue:(float)dr["OnlinePrice"];
      

  11.   

    info.OnlinePrice =System.Convert.IsDBNull(dr["OnlinePrice"])? 
    float.MinValue:(float)dr["OnlinePrice"];
      

  12.   

    19L 还是抛出错误 难道真的把float类型全部都改了 FLOAT类型就不行吗
      

  13.   

    抛出什么错误?
    你可以 将其转为Double看看。info.OnlinePrice =System.Convert.IsDBNull(dr["OnlinePrice"])? 
    Double.MinValue:(Double)dr["OnlinePrice"];
      

  14.   

    这种问题我遇到过。
    float和Double都试过,我以前也没有转成功。但我把数据库里的数据类型和程序里的统一了就行了。我后来用提:decimal。。就可以了
      

  15.   

     运行时抛出错误 :指定的转换类型无效                        确保列中的最大索引小于列表的大小 
                        确保源类型可以转化为目标类型
    数据库中数据类型也改成DOUBLE吗
      

  16.   

    21L 调试错误错误 1 “System.Convert”并不包含“IsDBNulldr”的定义 是不是还要什么头文件的
      

  17.   

    我现在把数据库中数据类型全部改成string 运行时说无法将string 改成float 怎么会这样