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    

Artikel empfehlen

TypeScript-Lernhinweise: Typeingrenzung

Inhaltsverzeichnis Vorwort Typinferenz Einengung ...

Grundlegende Schritte zur Verwendung einer Mysql-SSH-Tunnelverbindung

Vorwort Aus Sicherheitsgründen kann sich der Root...

So zeigen Sie die Erstellungszeit von Dateien in Linux an

1. Einleitung Ob die Erstellungszeit einer Datei ...

Analyse des MySQL-Warnprotokolls zu abgebrochenen Verbindungen

Vorwort: Manchmal wird die mit MySQL verbundene S...

Vue implementiert ein verschiebbares Baumstrukturdiagramm

Inhaltsverzeichnis Rekursive Vue-Komponente Drag-...

CSS-Schreibformat, detaillierte Erklärung der Grundstruktur einer mobilen Seite

1. CSS-Schreibformat 1. Inline-Stile Sie können C...

Einführung in die wichtigsten Browser und ihre Kernel

Trident-Kern: IE, MaxThon, TT, The World, 360, So...

JavaScript-Implementierung des klassischen Schlangenspiels

In diesem Artikel wird der spezifische JavaScript...

So verwenden Sie Übersetzung und Übergang in CSS3

Ich habe immer das Gefühl, dass Übersetzen und Üb...

So führen Sie MySQL mit Docker-Compose aus

Verzeichnisstruktur . │ .env │ docker-compose.yml...

Beispiele für personalisiertes und kreatives Website-Design (30)

Aus diesem Grund haben wir eine Auswahl von 30 Kom...