Erläuterung des MySQL-Abfragebeispiels anhand instanziierter Objektparameter

Erläuterung des MySQL-Abfragebeispiels anhand instanziierter Objektparameter

Dieser Artikel stellt vor, wie Sie durch Instanziieren von Objektparametern Daten in MySQL abfragen. (Quellcode) hat einen gewissen Referenzwert. Freunde in Not können darauf zurückgreifen. Ich hoffe, es wird Ihnen hilfreich sein.

öffentliche statische Zeichenfolge QueryByEntity<T>(T t), wobei T : neu()
{ string resultstr = string.Leer;
  MySqlDataReader reader = null; versuchen
  {
    Typ Typ = Typ von (T);
    PropertyInfo[] Eigenschaften = Typ.GetProperties(); Zeichenfolge Auswahl = Zeichenfolge.Format("Select * from {0} {1}", Typ.Name, "{0}"); Zeichenfolge wobei = Zeichenfolge.Empty; foreach (PropertyInfo-Eigenschaft in Eigenschaften)
    { var Wert = t.GetPropertyValue<T>(Eigenschaft); wenn (Wert != null && !Wert.Equals(Eigenschaft.GetDefaultValue()))
      { wenn (string.IsNullOrEmpty(wobei))
        { wobei = Zeichenfolge.Format(" wobei {0}='{1}' ", Eigenschaftsname, Wert);
        } anders
        { wobei = Zeichenfolge.Format("{0} und {1} = '{2}'", wobei, Eigenschaftsname, Wert);
        }
      }
    } Auswahl = Zeichenfolge.Format(Auswahl, wo);
 
    MySqlConnection-Verbindung = OpenConnection(); wenn (Verbindung == null) returniere resultstr;
    MySqlCommand _sqlCom = neuer MySqlCommand(Auswählen, Verbindung);
    Leser = _sqlCom.ExecuteReader();
    Liste<T> tList = neue Liste<T>(); während (Reader.Read())
    {
      T t1 = new T(); foreach (PropertyInfo-Eigenschaft in Eigenschaften)
      { wenn (!string.IsNullOrEmpty(reader[Eigenschaft.Name].ToString()))
        {
          Eigenschaft.SetMethod.Invoke(t1, neues Objekt[] { Leser[Eigenschaft.Name] });
        }
      }
      tList.Add(t1);
    }
    resultstr = JsonConvert.SerializeObject(tList);
  } catch (Ausnahme ex)
  {
    Logging.Error(string.Format("Datenbankabfrage fehlgeschlagen, {0}", ex.Message));
  } Endlich
  { wenn (Leser != null)
    {
      Leser.Schließen();
      Leser.Entsorgen();
    }
  } Ergebnisstr zurückgeben;
}interne statische Klasse ObjectExtend
{ öffentliches statisches Objekt GetPropertyValue<T>(dieses Objekt obj, PropertyInfo-Eigenschaft)
  {
    Typ Typ = Typ von (T);
    PropertyInfo propertyInfo = Typ.GetProperty(property.Name); wenn (propertyInfo != null)
    { return propertyInfo.GetMethod.Invoke(obj, null);
    } gibt null zurück;
  } öffentliches statisches Objekt GetDefaultValue(diese PropertyInfo-Eigenschaft)
  Activator.CreateInstance(Eigenschaft.Eigenschaftstyp) : null;
  }
}

Durch Instanziieren von Parametern, Zuweisen von Werten zu Eigenschaften, Übergeben von Objekten als Parameter und Abrufen von Objektnamen, Spaltennamen und Spaltenwerten durch Reflektion. Der Objektname muss mit dem Tabellennamen übereinstimmen und das Attribut muss mit dem Spaltennamen übereinstimmen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Eine kurze Diskussion über das Problem der Parameterübergabe bei der Verwendung in pymysql-Abfrageanweisungen
  • So verwenden Sie den Limit-Parameter zur Optimierung von MySQL-Abfragen
  • Zusammenfassung der speicherbezogenen Parameter von MySQL 8.0
  • Python MySQL in der Parametrisierungsbeschreibung
  • Python MySQLdb-Parameterübergabemethode beim Ausführen von SQL-Anweisungen
  • Python MySQL Datums-/Uhrzeitformatierung als Parameteroperationen
  • Detaillierte Erläuterung der MySQL-Konfigurationsparameteroptimierung
  • Umfassende Referenz zur MySQL-Leistungsoptimierungsmethode, von der CPU über die Dateisystemauswahl bis hin zur mysql.cnf-Parameteroptimierung
  • Detaillierte Erläuterung der Parameteroptimierung table_open_cache und sinnvolle Konfiguration unter MySQL 5.6
  • MySQL-Parameterbezogene Konzepte und Abfrageänderungsmethoden

<<:  Praktische Fähigkeiten zur Entwicklung von WeChat-Applets: Datenübertragung und -speicherung

>>:  So installieren Sie Graphviz und beginnen mit dem Tutorial unter Windows

Artikel empfehlen

Eine ausführliche Diskussion zur Detailanalyse im Webdesign

Bei der Designarbeit höre ich oft, dass an der Übe...

So erstellen Sie https mit Nginx und dem kostenlosen Tencent Cloud-Zertifikat

Ich habe gelernt, wie man https bekommt. Kürzlich...

JavaScript Canvas implementiert Grafiken und Text mit Schatten

Verwenden Sie Canvas, um Grafiken und Text mit Sc...

Tutorial zur Remote-Verbindung mit einer MySQL-Datenbank unter Linux

Vorwort Ich bin kürzlich bei der Arbeit auf diese...

Best Practices zum Teilen von React-Code

Wenn ein Projekt eine gewisse Komplexität erreich...

Detaillierte Erläuterung der kombinierten MySQL-Abfrage

Verwenden von UNION Die meisten SQL-Abfragen best...

So entfernen Sie MySQL aus Ubuntu und installieren es neu

Löschen Sie zuerst MySQL: sudo apt-get remove mys...

So verwenden Sie ein Domestic Image Warehouse für Docker

1. Problembeschreibung Aus bestimmten Gründen ist...