MySQL query example explanation through instantiated object parameters

MySQL query example explanation through instantiated object parameters

This article will introduce how to query data in MySQL by instantiating object parameters. (Source code) has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

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("Query database failed, {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;
  }
}

By instantiating parameters, assigning values ​​to properties, passing objects as parameters, and obtaining object names, column names, and column values ​​through reflection. The object name is required to be consistent with the table name, and the attribute is required to be consistent with the column name. Thank you for your support of 123WORDPRESS.COM.

You may also be interested in:
  • A brief discussion on the problem of passing parameters when using in in pymysql query statements
  • How to use the Limit parameter to optimize MySQL queries
  • Summary of MySQL 8.0 memory-related parameters
  • Python MySQL in parameterization description
  • Python MySQLdb parameter passing method when executing sql statements
  • Python MySQL datetime formatting as parameter operations
  • Detailed explanation of MYSQL configuration parameter optimization
  • MySQL performance comprehensive optimization method reference, from CPU, file system selection to mysql.cnf parameter optimization
  • Detailed explanation of table_open_cache parameter optimization and reasonable configuration under MySQL 5.6
  • MySQL parameter related concepts and query change methods

<<:  WeChat applet development practical skills: data transmission and storage

>>:  How to install Graphviz and get started tutorial under Windows

Recommend

How to limit the input box to only input pure numbers in HTML

Limit input box to only pure numbers 1、onkeyup = ...

Mysql SQL statement operation to add or modify primary key

Add table fields alter table table1 add transacto...

JavaScript to achieve accordion effect

This article shares the specific code for JavaScr...

How to shrink the log file in MYSQL SERVER

The transaction log records the operations on the...

Docker uses busybox to create a base image

The first line of a Docker image starts with an i...

MySQL 8.0.12 decompression version installation tutorial

This article shares the installation tutorial of ...

js canvas realizes rounded corners picture

This article shares the specific code of js canva...

How to view the network routing table in Ubuntu

What are Routing and Routing Table in Linux? The ...

Vue implements multiple ideas for theme switching

Table of contents Dynamically change themes The f...

Implementation of multi-environment configuration (.env) of vue project

Table of contents What is multi-environment confi...

Detailed explanation of how to easily switch CSS themes

I recently added a very simple color scheme (them...

Implementation of MySQL master-slave status check

1. Check the synchronization status of A and B da...