MySQL通过实例化对象参数查询实例讲解
更新时间:2018年10月16日 14:38:07 投稿:laozhang
在本篇文章里我们给大家分享了关于MySQL如何通过实例化对象参数查询数据的相关知识点内容,有需要的朋友们可以测试参考下。
本篇文章给大家带来的内容是关于MySQL如何通过实例化对象参数查询数据 ?(源代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
public static string QueryByEntity<T>(T t) where T : new() { string resultstr = string.Empty; MySqlDataReader reader = null; try { Type type = typeof(T); PropertyInfo[] properties = type.GetProperties(); string select = string.Format("Select * from {0} {1}", type.Name, "{0}"); string where = string.Empty; foreach (PropertyInfo property in properties) { var value = t.GetPropertyValue<T>(property); if (value != null && !value.Equals(property.GetDefaultValue())) { if (string.IsNullOrEmpty(where)) { where = string.Format(" where {0}='{1}' ", property.Name, value); } else { where = string.Format(" {0} and {1} = '{2}' ", where, property.Name, value); } } } select = string.Format(select, where); MySqlConnection connection = OpenConnection(); if (connection == null) return resultstr; MySqlCommand _sqlCom = new MySqlCommand(select, connection); reader = _sqlCom.ExecuteReader(); List<T> tList = new List<T>(); while (reader.Read()) { T t1 = new T(); foreach (PropertyInfo property in properties) { if (!string.IsNullOrEmpty(reader[property.Name].ToString())) { property.SetMethod.Invoke(t1, new object[] { reader[property.Name] }); } } tList.Add(t1); } resultstr = JsonConvert.SerializeObject(tList); } catch (Exception ex) { Logging.Error(string.Format("查询数据库失败,{0}", ex.Message)); } finally { if (reader != null) { reader.Close(); reader.Dispose(); } } return resultstr; }internal static class ObjectExtend { public static object GetPropertyValue<T>(this object obj, PropertyInfo property) { Type type = typeof(T); PropertyInfo propertyInfo = type.GetProperty(property.Name); if (propertyInfo != null) { return propertyInfo.GetMethod.Invoke(obj, null); } return null; } public static object GetDefaultValue(this PropertyInfo property) { return property.PropertyType.IsValueType ? Activator.CreateInstance(property.PropertyType) : null; } }
通过实例化参数,对属性赋值,将对象作为参数传入,反射获取对象名称,列名,列值。要求对象名与表名一致,属性与列名一致,感谢大家对脚本之家的支持。
相关文章
CentOS Linux更改MySQL数据库目录位置具体操作
由于MySQL的数据库太大,默认安装的/var盘已经再也无法容纳新增加的数据,没有办法,只能想办法转移数据的目录,本文整理了一些MySQL从/var/lib/mysql目录下面转移到/home/mysql_data/mysql目录的具体操作,感兴趣的你可不要走开啊2013-01-01CentOS6.5下RPM方式安装mysql5.6.33的详细教程
本文给大家详细介绍CentOS6.5下RPM方式安装mysql5.6.33的教程,本文分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友一起看看吧2016-10-10
最新评论