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;
  }
}

通过实例化参数,对属性赋值,将对象作为参数传入,反射获取对象名称,列名,列值。要求对象名与表名一致,属性与列名一致,感谢大家对脚本之家的支持。

相关文章

  • 在 Windows 10 上安装 解压缩版 MySql(推荐)

    在 Windows 10 上安装 解压缩版 MySql(推荐)

    这篇文章主要介绍了在 Windows 10 上安装 解压缩版 MySql(推荐)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • 如何将Excel文件导入MySQL数据库

    如何将Excel文件导入MySQL数据库

    这篇文章主要为大家详细介绍了Excel文件导入MySQL数据库的具体方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • mysql查询连续记录方式

    mysql查询连续记录方式

    这篇文章主要介绍了mysql查询连续记录方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • mysql之TIMESTAMP(时间戳)用法详解

    mysql之TIMESTAMP(时间戳)用法详解

    这篇文章主要介绍了mysql之TIMESTAMP(时间戳)用法,需要的朋友可以参考下
    2014-07-07
  • MySQL错误ERROR 1615 解决方法

    MySQL错误ERROR 1615 解决方法

    这篇文章主要介绍了MySQL错误ERROR 1615 解决方法,这个问题是由于Mysql配置不当造成的,需要的朋友可以参考下
    2015-01-01
  • 详细解读分布式锁原理及三种实现方式

    详细解读分布式锁原理及三种实现方式

    这篇文章从三种基于不同形式的分布式锁的实现,数据库、缓存和zookeeper,内容比较详细,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • mysql8新特性之binlog_expire_logs_seconds浅析

    mysql8新特性之binlog_expire_logs_seconds浅析

    MySQL8中新增了不少新特性,这些特性提高了数据库的安全性和性能,使数据库管理员能够更灵活地进行账户管理工作,下面这篇文章主要给大家介绍了关于mysql8新特性之binlog_expire_logs_seconds的相关资料,需要的朋友可以参考下
    2023-02-02
  • FROM_UNIXTIME 格式化MYSQL时间戳函数

    FROM_UNIXTIME 格式化MYSQL时间戳函数

    对MYSQL没有进行过深入的研究,基础知识匮乏,一遇到问题只能手册,看来要把MYSQL的学习安排进时间表了。
    2011-04-04
  • MySQL中group by与max()一起使用的坑

    MySQL中group by与max()一起使用的坑

    最近在做一个项目,发现用之前SQL语句导出的余额与客户人员最近消费记录所显示的余额不一致,本文就来了解一下这个错误,感兴趣的可以了解一下
    2023-08-08
  • MySQL使用物理方式快速恢复单表

    MySQL使用物理方式快速恢复单表

    这篇文章主要介绍了MySQL使用物理方式快速恢复单表,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12

最新评论