问题描述
while(rdr.Read()){CModelevents=newCModel(GetValue<int>(rdr.GetValue(0)),GetValue<string>(rdr.GetValue(1)),GetValue<int>(rdr.GetInt32(2)),GetValue<string>(rdr.GetValue(3)),GetValue<DateTime>(rdr.GetValue(4)));ILModel.Add(events);}publicstaticTGetValue<T>(objectfieldName){if(fieldName!=null||fieldName!=DBNull.Value){return(T)fieldName;}else{returndefault(T);}}
运行出现错误:数据为空。不能对空值调用此方法或属性。
解决方案
解决方案二:
CModelevents=newCModel(rdr.IsDBNull(0)?0:rdr.GetInt32(0),rdr.IsDBNull(1)?null:rdr.GetString(1));//....morefield
解决方案三:
谢谢.楼上还有别的办法吗.
解决方案四:
找出一个问题:publicstaticTGetValue<T>(objectfieldName){//if(fieldName!=null||fieldName!=DBNull.Value)if(fieldName==null||fieldName==DBNull.Value){returndefault(T);}else{return(T)fieldName;}}
解决方案五:
if写错了吧。因该是并且,而不是或的关系。publicstaticTGetValue<T>(objectfieldName){//if(fieldName!=null||fieldName!=DBNull.Value)if(fieldName!=null&&fieldName!=DBNull.Value){return(T)fieldName;}else{returndefault(T);}}
解决方案六:
帮顶
解决方案七:
都用到范型了,不错!