本篇文章给大家带来的内容是关于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;
  }
}

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

华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?