解决方案 »

  1.   

    yddl.PatientInfoId = row["PatientInfoId"] == null ? 0 : (int)row["PatientInfoId"];
      

  2.   

    要从根源解决问题,就不会在cs代码中做出修改。修改你的view sql语句,例如
    select isnull(name,'') ,isnull(age,0) from table 
      

  3.   

    DBNull.Value是赋值不给int的,到底怎么办要由你根据需要来定,无非就是把变量改成int?类型,或是null视为0,反正要加判断
      

  4.   

    几种解决方案:
    1. sql解决,  isnull(xxx, 0) as xxx
    2. C#中判断 为null时如何处理
    3. 将字段改为 int? 类型;其实最主要还是你的需求, 到底是否需要可空类型—— int?
      

  5.   

    但是还是原来的错误,“指定的转换无效”,麻烦帮我看看!
    “”
    private Yddlinf GetYddlByRow(DataRow row)
    {
                Yddlinf yddl = new Yddlinf();
                yddl.PatientInfoId = row["PatientInfoId"] == null?0:(int)row["PatientInfoId"];
                yddl.SeatHoursPerday = row["SeatHoursPerday"] == null?0:(int)row["SeatHoursPerday"];
                yddl.DislikeSport = row["DislikeSport"] == null?"":(string)row["DislikeSport"];
                yddl.FavoriteSportId = row["FavoriteSportId"] == null?0:(int)row["FavoriteSportId"];
                yddl.SportTimeId = row["SportTimeId"] == null?0:(int)row["SportTimeId"];
                yddl.SportFrequencyPerWeekId = row["SportFrequencyPerWeekId"] == null?0:(int)row["SportFrequencyPerWeekId"];
                            return yddl;
    }
      

  6.   

    我的要求就是从数据库里读出数据,碰到NULL值,显示出来就变成“”就行
      

  7.   

    但是还是原来的错误,“指定的转换无效”,麻烦帮我看看!
    “”
    private Yddlinf GetYddlByRow(DataRow row)
    {
                Yddlinf yddl = new Yddlinf();
                yddl.PatientInfoId = row["PatientInfoId"] == null?0:(int)row["PatientInfoId"];
                yddl.SeatHoursPerday = row["SeatHoursPerday"] == null?0:(int)row["SeatHoursPerday"];
                yddl.DislikeSport = row["DislikeSport"] == null?"":(string)row["DislikeSport"];
                yddl.FavoriteSportId = row["FavoriteSportId"] == null?0:(int)row["FavoriteSportId"];
                yddl.SportTimeId = row["SportTimeId"] == null?0:(int)row["SportTimeId"];
                yddl.SportFrequencyPerWeekId = row["SportFrequencyPerWeekId"] == null?0:(int)row["SportFrequencyPerWeekId"];
                            return yddl;
    }1.用sql,改成isnull(xxx,'') as xxx
    2.C#程序两个判断 row["PatientInfoId"] == DBNull.Value || row["PatientIntfold"] == null ,上面出现这个错误是实体属性与数据库字段的类型不相符,查看一下哪个转换出错了
      

  8.   

    jsxl.AnxietyDate = row["AnxietyDate"] == Null? "" : (DateTime)row["AnxietyDate"];
    如果是时间的话,怎么转换呢
      

  9.   


    其实楼主啊,你可能并不知道什么叫可空类型……
    你可以去查一下吧。当然, 你不懂也可以应付这样的情况。
    不过, 你得分门别类地去处理, 至于这些方法怎么处理, 你自己写吧, 更合你的要求。 
    最后那个参数, 就是null或者转换失败时的缺省值
      

  10.   

    /// <summary>
            /// 从DataReader中读取可空对象
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="dr"></param>
            /// <param name="key"></param>
            /// <returns></returns>
            public static Nullable<T> GetNullable<T>(this IDataReader dr, string key)
                where T : struct
            {
                return dr[key] == null || dr[key] == DBNull.Value ? (Nullable<T>)null : (T)dr[key];
            }
            /// <summary>
            /// 当DataReader读取对象为空时,返回defaultValue
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="dr"></param>
            /// <param name="key"></param>
            /// <param name="defaultValue"></param>
            /// <returns></returns>
            public static T GetDefaultWhileNullable<T>(this IDataReader dr, string key, T defaultValue)
            {
                return dr[key] == null || dr[key] == DBNull.Value ? defaultValue : (T)dr[key];
            }
            /// <summary>
            /// 从DataReader中读取字符串并除前后空白字符后
            /// </summary>
            /// <param name="dr"></param>
            /// <param name="key"></param>
            /// <returns></returns>
            public static string GetTrimedString(this IDataReader dr, string key)
            {
                return dr[key].ToString().Trim();
            }
      

  11.   

    现在碰到bool值
    jsxl.HardToSleep = row["HardToSleep"] == DBNull.Value ? bool.FalseString :(bool)row["HardToSleep"];这个写法又有问题了,该怎么修改啊其实楼主啊,你可能并不知道什么叫可空类型……
    你可以去查一下吧。当然, 你不懂也可以应付这样的情况。
    不过, 你得分门别类地去处理, 至于这些方法怎么处理, 你自己写吧, 更合你的要求。 
    最后那个参数, 就是null或者转换失败时的缺省值
      

  12.   


    public static DateTime GetDateTime(DataRow dr, string fieldName, DateTime replaceValue)
            {
                if (dr.IsNull(fieldName))
                    return replaceValue;
                return Convert.ToDateTime(dr[fieldName]);
            }public static object GetValue(DataRow dr, string fieldName, object replaceValue) 
            {
                if (dr.IsNull(fieldName))
                    return replaceValue;
                return dr[fieldName];
            }布尔类型的, 可以用上面的 GetValue 后转一下 , 如我前面发的图就可以了。
    其实你应该多思考, 这个问题不难解决的
      

  13.   

    我是问jsxl.HardToSleep = row["HardToSleep"] == DBNull.Value ? bool.FalseString :(bool)row["HardToSleep"];这个写法又有问题了,该怎么修改啊?大哥,帮我看看public static DateTime GetDateTime(DataRow dr, string fieldName, DateTime replaceValue)
            {
                if (dr.IsNull(fieldName))
                    return replaceValue;
                return Convert.ToDateTime(dr[fieldName]);
            }public static object GetValue(DataRow dr, string fieldName, object replaceValue) 
            {
                if (dr.IsNull(fieldName))
                    return replaceValue;
                return dr[fieldName];
            }布尔类型的, 可以用上面的 GetValue 后转一下 , 如我前面发的图就可以了。
    其实你应该多思考, 这个问题不难解决的