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

Vue encapsulates the public function method of exporting Excel data

vue+element UI encapsulates a public function to ...

js to achieve simple magnifying glass effects

This article example shares the specific code of ...

Install mysql5.7 on Ubuntu 18.04

Ubuntu 18.04 installs mysql 5.7 for your referenc...

Summary of the use of element's form elements

There are many form elements. Here is a brief sum...

What is MIME TYPE? MIME-Types type collection

What is MIME TYPE? 1. First, we need to understand...

Docker binding fixed IP/cross-host container mutual access operation

Preface Previously, static IPs assigned using pip...

Comprehensive summary of MYSQL tables

Table of contents 1. Create a table 1.1. Basic sy...

How to change MySQL character set utf8 to utf8mb4

For MySQL 5.5, if the character set is not set, t...

Solve the problem of forgetting password in MySQL 5.7 under Linux

1. Problem Forgot password for mysql5.7 under lin...

A detailed discussion of components in Vue

Table of contents 1. Component Registration 2. Us...

Analysis of uniapp entry-level nvue climbing pit record

Table of contents Preface Hello World image Set b...

Three common uses of openlayers6 map overlay (popup window marker text)

Table of contents 1. Write in front 2. Overlay to...

Complete example of Vue encapsulating the global toast component

Table of contents Preface 1. With vue-cli 1. Defi...

MySQL compression usage scenarios and solutions

Introduction Describes the use cases and solution...

Professional and non-professional web design

First of all, the formation of web page style main...