1.windows下mysql的表名大小写区分 :
一搜差不多都是
打开my.ini
[mysqld]
lower_case_table_names=0
但是这么已设置,mysql服务都启动不起来。mysql版本5.7.19。
但设置成lower_case_table_names=2就没问题了,表名区分了大小写。
lower_case_table_names=0应该是Linux下的设置方式吧?具体我也没时间去实验了。
2.话说离开百度,某些人就不会写代码了。也难怪,现在要求开发速度高,哪还有那么多人去潜心学习基础知识。但很多网上的代码是有问题的,也许各位也都在实际测试中发现了,我就举个例子。
就拿C#的DataTable对象转List<>集合的代码,网上一搜千篇一律,注释都没变:
public static List<T> ToList<T>(this DataTable dt) where T : class, new() { //创建一个属性的列表 List<PropertyInfo> prlist = new List<PropertyInfo>(); //获取TResult的类型实例 反射的入口 Type t = typeof(T); //获得TResult 的所有的Public 属性 并找出TResult属性和DataTable的列名称相同的属性(PropertyInfo) 并加入到属性列表 Array.ForEach<PropertyInfo>(t.GetProperties(), p => { if (dt.Columns.IndexOf(p.Name) != -1) prlist.Add(p); }); //创建返回的集合 List<T> oblist = new List<T>(); foreach (DataRow row in dt.Rows) { //创建TResult的实例 T ob = new T(); //找到对应的数据 并赋值 prlist.ForEach(p => { if (row[p.Name] != DBNull.Value) p.SetValue(ob, row[p.Name], null); }); //放入到返回的集合中. oblist.Add(ob); } return oblist; }
甚至更简单:
public static IList<T> ConvertToModel(DataTable dt){IList<T> ts = new List<T>();// 定义集合Type type = typeof(T); // 获得此模型的类型string tempName = "";foreach (DataRow dr in dt.Rows){T t = new T(); PropertyInfo[] propertys = t.GetType().GetProperties();// 获得此模型的公共属性foreach (PropertyInfo pi in propertys){tempName = pi.Name;if (dt.Columns.Contains(tempName)){if (!pi.CanWrite) continue;object value = dr[tempName];if (value != DBNull.Value)pi.SetValue(t, value, null);}}ts.Add(t);}return ts;}
他们最大的问题,就是忽略了datetime类型的处理。因为windows操作系统日期格式设置的差异,导致日期时间格式的强制转换会有问题,有时碰巧会转换成功,但有时转换结果就是0001-00-00,
这是第一段代码稍作修改后的,处理比较简单,仅供参考:
prlist.ForEach(p => {if (row[p.Name] != DBNull.Value) p.SetValue(ob, row[p.Name], null);//如果是日期时间类型,不能这么草率的赋值!网络上的代码漏洞很多! //日期时间类型的处理 try{if (p.PropertyType == typeof(DateTime) || p.PropertyType == typeof(DateTime?)){DateTime _dt;try{_dt = DateTime.FromOADate(double.Parse(row[p.Name].ToString()));}catch{_dt = Convert.ToDateTime(row[p.Name].ToString());}p.SetValue(ob, _dt, null);}}catch { }});
再啰嗦一句,什么年代了,为毛还要用DataTable这种对象?弱类型的集合现在很多场合下用起来都很费劲,少不了各种判断和转换。某些喜欢用dataTable的人,不是因为DataTable好用,而是他不会用别的,见过一个大哥,不把集合转成dataTable都不会绑数据源,还能说什么呢?
转载于:.html
本文发布于:2024-01-29 11:16:30,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170649819514889.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |