php网站开发实训报告书,怎么做兼职类网站吗,衡阳网站优化方案,门户媒体有哪些在使用DataRow读取数据时#xff0c;通常会遇到数据可能为Null, 但是又需要转换为如int等其它类型的数据#xff0c;因此就通常会写这样的代码#xff1a; if (dr[name] ! DBNull.Value dr[name] ! null){ if (!int.TryParse(dr[name].ToString(), out result… 在使用DataRow读取数据时通常会遇到数据可能为Null, 但是又需要转换为如int等其它类型的数据因此就通常会写这样的代码 if (dr[name] ! DBNull.Value dr[name] ! null){ if (!int.TryParse(dr[name].ToString(), out result)) throw new Exception(整形转换失败);} 而且这样的代码通常会大段大段出现在很多地方。对于比较懒惰的程序员来说这样的RY(repeat yourself)是一件很痛苦的事情因此是时候来想个更好的方法了。这里首先想到的就是Extension Method。 很简单的几句代码有了这个方法之后在使用DataRow时就可以通过扩展方法读取数据了 model.Id dr.SafeReadInt32(Id,0);model.codeNum dr.GetString(codeNum); 简单但是实用的代码希望对大家在项目中有所帮助。 这里参考了,一下两篇文章并进行了代码重新组织最后是整理后类源码 使用 Extension Methods 来使 IDataReader 更加方便 C#底层SqlDataReader类常用扩展 public static class SystemDataExtension{#region DataReader 扩展public static T SafeReadT(this IDataReader reader, string fieldName, T defaultValue){try{object obj reader[fieldName];if (obj null || obj System.DBNull.Value)return defaultValue;return (T)Convert.ChangeType(obj, defaultValue.GetType());}catch{return defaultValue;}}/// summary /// 获取字符串类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static string GetString(this IDataReader dr, string name){if (dr[name] ! DBNull.Value dr[name] ! null)return dr[name].ToString();return String.Empty;}/// summary /// 获取非空类型数据 /// /summary /// param namecon/param/// param namename/param/// returns/returns public static DateTime GetDateTime(this IDataReader dr, string name){DateTime result DateTime.Now;if (dr[name] ! DBNull.Value dr[name] ! null){if (!DateTime.TryParse(dr[name].ToString(), out result))throw new Exception(日期格式数据转换失败);}return result;}/// summary /// 获取可空类型日期数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static DateTime? GetNullDateTime(this IDataReader dr, string name){DateTime? result null;DateTime time DateTime.Now;if (dr[name] ! DBNull.Value dr[name] ! null){if (!DateTime.TryParse(dr[name].ToString(), out time))throw new Exception(日期格式数据转换失败);result time;}return result;}/// summary /// 获取guid类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static Guid GetGuid(this IDataReader dr, string name){Guid guid Guid.Empty;if (dr[name] ! DBNull.Value dr[name] ! null){if (Guid.TryParse(dr[name].ToString(), out guid))throw new Exception(guid类型数据转换失败);}return guid;}/// summary /// 获取整形数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static int GetInt32(this IDataReader dr, string name){int result 0;if (dr[name] ! DBNull.Value dr[name] ! null){if (!int.TryParse(dr[name].ToString(), out result))throw new Exception(整形转换失败);}return result;}/// summary /// 获取双精度类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static double GetDouble(this IDataReader dr, string name){double result 0.00;if (dr[name] ! DBNull.Value dr[name] ! null){if (!double.TryParse(dr[name].ToString(), out result))throw new Exception(双精度类型转换失败);}return result;}/// summary /// 获取单精度类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static float GetSingle(this IDataReader dr, string name){float result 0.00f;if (dr[name] ! DBNull.Value dr[name] ! null){if (!float.TryParse(dr[name].ToString(), out result))throw new Exception(单精度类型转换失败);}return result;}/// summary /// 获取decimal类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static decimal GetDecimal(this IDataReader dr, string name){decimal result 0.00m;if (dr[name] ! DBNull.Value dr[name] ! null){if (!decimal.TryParse(dr[name].ToString(), out result))throw new Exception(Decimal类型转换失败);}return result;}/// summary /// 获取int16类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static Int16 GetInt16(this IDataReader dr, string name){short result 0;if (dr[name] ! DBNull.Value dr[name] ! null){if (!short.TryParse(dr[name].ToString(), out result))throw new Exception(短整形转换失败);}return result;}/// summary /// 获取Byte类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static byte GetByte(this IDataReader dr, string name){byte result 0;if (dr[name] ! DBNull.Value dr[name] ! null){if (!byte.TryParse(dr[name].ToString(), out result))throw new Exception(Byte类型转换失败);}return result;}/// summary /// 获取bool类型数据如果传值是1或者是返回true; /// /summary /// param namecon/param /// param namename/param /// returns/returns public static bool GetBool(this IDataReader dr, string name){if (dr[name] ! DBNull.Value dr[name] ! null){return dr[name].ToString() 1 || dr[name].ToString() 是 || dr[name].ToString().ToLower() true;}return false;} #endregion#region DataRow 扩展public static T SafeReadT(this DataRow dr, string fieldName, T defaultValue){try{object obj dr[fieldName];if (obj null || obj System.DBNull.Value)return defaultValue;return (T)Convert.ChangeType(obj, defaultValue.GetType());}catch{return defaultValue;}}/// summary /// 获取字符串类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static string GetString(this DataRow dr, string name){if (dr[name] ! DBNull.Value dr[name] ! null)return dr[name].ToString();return String.Empty;}/// summary /// 获取非空类型数据 /// /summary /// param namecon/param/// param namename/param/// returns/returns public static DateTime GetDateTime(this DataRow dr, string name){DateTime result DateTime.Now;if (dr[name] ! DBNull.Value dr[name] ! null){if (!DateTime.TryParse(dr[name].ToString(), out result))throw new Exception(日期格式数据转换失败);}return result;}/// summary /// 获取可空类型日期数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static DateTime? GetNullDateTime(this DataRow dr, string name){DateTime? result null;DateTime time DateTime.Now;if (dr[name] ! DBNull.Value dr[name] ! null){if (!DateTime.TryParse(dr[name].ToString(), out time))throw new Exception(日期格式数据转换失败);result time;}return result;}/// summary /// 获取guid类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static Guid GetGuid(this DataRow dr, string name){Guid guid Guid.Empty;if (dr[name] ! DBNull.Value dr[name] ! null){if (Guid.TryParse(dr[name].ToString(), out guid))throw new Exception(guid类型数据转换失败);}return guid;}/// summary /// 获取整形数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static int GetInt32(this DataRow dr, string name){int result 0;if (dr[name] ! DBNull.Value dr[name] ! null){if (!int.TryParse(dr[name].ToString(), out result))throw new Exception(整形转换失败);}return result;}/// summary /// 获取双精度类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static double GetDouble(this DataRow dr, string name){double result 0.00;if (dr[name] ! DBNull.Value dr[name] ! null){if (!double.TryParse(dr[name].ToString(), out result))throw new Exception(双精度类型转换失败);}return result;}/// summary /// 获取单精度类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static float GetSingle(this DataRow dr, string name){float result 0.00f;if (dr[name] ! DBNull.Value dr[name] ! null){if (!float.TryParse(dr[name].ToString(), out result))throw new Exception(单精度类型转换失败);}return result;}/// summary /// 获取decimal类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static decimal GetDecimal(this DataRow dr, string name){decimal result 0.00m;if (dr[name] ! DBNull.Value dr[name] ! null){if (!decimal.TryParse(dr[name].ToString(), out result))throw new Exception(Decimal类型转换失败);}return result;}/// summary /// 获取int16类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static Int16 GetInt16(this DataRow dr, string name){short result 0;if (dr[name] ! DBNull.Value dr[name] ! null){if (!short.TryParse(dr[name].ToString(), out result))throw new Exception(短整形转换失败);}return result;}/// summary /// 获取Byte类型数据 /// /summary /// param namedr/param /// param namename/param /// returns/returns public static byte GetByte(this DataRow dr, string name){byte result 0;if (dr[name] ! DBNull.Value dr[name] ! null){if (!byte.TryParse(dr[name].ToString(), out result))throw new Exception(Byte类型转换失败);}return result;}/// summary /// 获取bool类型数据如果传值是1或者是返回true; /// /summary /// param namecon/param /// param namename/param /// returns/returns public static bool GetBool(this DataRow dr, string name){if (dr[name] ! DBNull.Value dr[name] ! null){return dr[name].ToString() 1 || dr[name].ToString() 是 || dr[name].ToString().ToLower() true;}return false;}#endregion}转载于:https://www.cnblogs.com/IlidanStormRage/p/5737062.html