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

Ein kurzer Vortrag über den Diff-Algorithmus in Vue

Inhaltsverzeichnis Überblick Virtueller Dom Prinz...

So überprüfen Sie die Festplattennutzung unter Linux

1. Verwenden Sie den Befehl df, um die gesamte Fe...

Detaillierte Erklärung zum Kopieren und Sichern von Docker-Containerdaten

Hier nehmen wir den Jenkins-Container als Beispie...

Vue verwendet Plug-Ins, um Bilder proportional zuzuschneiden

In diesem Artikel wird der spezifische Code von V...

JS praktisches objektorientiertes Schlangenspielbeispiel

Inhaltsverzeichnis denken 1. Bild mit dem gierige...

So richten Sie die Swap-Partition SWAP in Linux 7.7 ein

Die Swap-Partition des Linux-Systems, also die Sw...

MySQL-Optimierung: Cache-Optimierung

Ich freue mich, dass einige Blogger meinen Artike...

So richten Sie geplante Sicherungsaufgaben in Linux CentOS ein

Implementierungsvorbereitung # Der Dateipfad muss...

Implementierung der gemeinsamen Nutzung von Daten zwischen Docker Volume-Containern

Was ist Volumen? „Volume“ bedeutet auf Englisch K...

Lösung des Konflikts zwischen Linux-Kernel- und SVN-Versionen

Phänomen Das System konnte den Linux-Systemkernel...