Heim  >  Artikel  >  Datenbank  >  Wie fragt MySQL Daten über instanziierte Objektparameter ab? (Quellcode)

Wie fragt MySQL Daten über instanziierte Objektparameter ab? (Quellcode)

云罗郡主
云罗郡主nach vorne
2018-10-15 14:46:501951Durchsuche

Der Inhalt dieses Artikels befasst sich damit, wie MySQL Daten über instanziierte Objektparameter abfragt. (Quellcode), es hat einen gewissen Referenzwert. Freunde in Not können darauf verweisen.

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

Durch Instanziieren von Parametern, Zuweisen von Werten zu Eigenschaften, Übergeben von Objekten als Parameter und Erhalten von Objektnamen, Spaltennamen und Spaltenwerten durch Reflektion. Der Objektname muss mit dem Tabellennamen und der Attributname mit dem Spaltennamen konsistent sein.

Das Obige ist die vollständige Einführung. Wenn Sie mehr über MySQL-Video-Tutorials erfahren möchten, schauen Sie sich bitte die chinesische PHP-Website an.


Das obige ist der detaillierte Inhalt vonWie fragt MySQL Daten über instanziierte Objektparameter ab? (Quellcode). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen