이 기사의 내용은 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; } }
매개변수를 인스턴스화하고, 속성에 값을 할당하고, 객체를 매개변수로 전달하고, 리플렉션을 통해 객체 이름, 열 이름, 열 값을 얻습니다. 객체 이름은 테이블 이름과 일치해야 하며, 속성 이름은 열 이름과 일치해야 합니다.
위 내용은 전체 소개입니다. MySQL 동영상 튜토리얼에 대해 자세히 알고 싶으시면 PHP 중국어 웹사이트를 주목하세요.
위 내용은 MySQL은 인스턴스화된 객체 매개변수를 통해 데이터를 어떻게 쿼리합니까? (소스 코드)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!