从数据表里读出NULL值,怎么忽略 http://188.93.174.57/#newwindow=1&q=dbnull.value 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 yddl.PatientInfoId = row["PatientInfoId"] == null ? 0 : (int)row["PatientInfoId"]; 要从根源解决问题,就不会在cs代码中做出修改。修改你的view sql语句,例如select isnull(name,'') ,isnull(age,0) from table DBNull.Value是赋值不给int的,到底怎么办要由你根据需要来定,无非就是把变量改成int?类型,或是null视为0,反正要加判断 几种解决方案:1. sql解决, isnull(xxx, 0) as xxx2. C#中判断 为null时如何处理3. 将字段改为 int? 类型;其实最主要还是你的需求, 到底是否需要可空类型—— int? 但是还是原来的错误,“指定的转换无效”,麻烦帮我看看!“” 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; } 我的要求就是从数据库里读出数据,碰到NULL值,显示出来就变成“”就行 但是还是原来的错误,“指定的转换无效”,麻烦帮我看看!“” 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 xxx2.C#程序两个判断 row["PatientInfoId"] == DBNull.Value || row["PatientIntfold"] == null ,上面出现这个错误是实体属性与数据库字段的类型不相符,查看一下哪个转换出错了 jsxl.AnxietyDate = row["AnxietyDate"] == Null? "" : (DateTime)row["AnxietyDate"];如果是时间的话,怎么转换呢 其实楼主啊,你可能并不知道什么叫可空类型……你可以去查一下吧。当然, 你不懂也可以应付这样的情况。不过, 你得分门别类地去处理, 至于这些方法怎么处理, 你自己写吧, 更合你的要求。 最后那个参数, 就是null或者转换失败时的缺省值 /// <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(); } 现在碰到bool值jsxl.HardToSleep = row["HardToSleep"] == DBNull.Value ? bool.FalseString :(bool)row["HardToSleep"];这个写法又有问题了,该怎么修改啊其实楼主啊,你可能并不知道什么叫可空类型……你可以去查一下吧。当然, 你不懂也可以应付这样的情况。不过, 你得分门别类地去处理, 至于这些方法怎么处理, 你自己写吧, 更合你的要求。 最后那个参数, 就是null或者转换失败时的缺省值 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 后转一下 , 如我前面发的图就可以了。其实你应该多思考, 这个问题不难解决的 我是问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 后转一下 , 如我前面发的图就可以了。其实你应该多思考, 这个问题不难解决的 高手进~超难,分不够再加直到解决。 SOS 急急急...ushort,long转入byte[]数组问题???? 哪位高手帮忙看下读取Excel单元格内容出现的错误 请问这种需求WPF如何实现好呢呢? 请问可不可能将类型作为参数传递 问一个关于checkedListBox的菜问题! 求指教:C++与C#通信,C#发了消息,C++只有在调试状态才可以收到 Mscomm 代码麻烦帮看看哪里有问题 关于动态创建控件 请问静态的方法和需实例化后才能使用的方法有什么区别? C# 特殊字符 存入SQLITE数据库中! c#调用c,c++ dll 嵌套结构体转换
select isnull(name,'') ,isnull(age,0) from table
1. sql解决, isnull(xxx, 0) as xxx
2. C#中判断 为null时如何处理
3. 将字段改为 int? 类型;其实最主要还是你的需求, 到底是否需要可空类型—— int?
“”
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;
}
“”
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 ,上面出现这个错误是实体属性与数据库字段的类型不相符,查看一下哪个转换出错了
如果是时间的话,怎么转换呢
其实楼主啊,你可能并不知道什么叫可空类型……
你可以去查一下吧。当然, 你不懂也可以应付这样的情况。
不过, 你得分门别类地去处理, 至于这些方法怎么处理, 你自己写吧, 更合你的要求。
最后那个参数, 就是null或者转换失败时的缺省值
/// 从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();
}
jsxl.HardToSleep = row["HardToSleep"] == DBNull.Value ? bool.FalseString :(bool)row["HardToSleep"];这个写法又有问题了,该怎么修改啊其实楼主啊,你可能并不知道什么叫可空类型……
你可以去查一下吧。当然, 你不懂也可以应付这样的情况。
不过, 你得分门别类地去处理, 至于这些方法怎么处理, 你自己写吧, 更合你的要求。
最后那个参数, 就是null或者转换失败时的缺省值
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 后转一下 , 如我前面发的图就可以了。
其实你应该多思考, 这个问题不难解决的
{
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 后转一下 , 如我前面发的图就可以了。
其实你应该多思考, 这个问题不难解决的