Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie stellt man mit C# eine Verbindung zu Mysql her?

Ihr unmittelbares Problem ist wahrscheinlich entweder eine falsche Verbindungszeichenfolge oder der Datenbankserver ist nicht verfügbar. Die Verbindungszeichenfolge sollte in etwa so aussehen

Server=localhost;Database=testdb;Uid=<username>;Pwd=<password>;

mit <username> und <password> durch Ihre tatsächlichen Werte ersetzt.

Abgesehen davon hat Ihr Code mehrere Probleme und Sie sollten sich diese unbedingt ansehen, wenn dies beabsichtigt ist, Produktionscode zu werden, und wahrscheinlich sogar, wenn dies nur ein Spielzeugprojekt ist, um etwas zu lernen. Die Liste ist in einer bestimmten Reihenfolge und möglicherweise nicht vollständig.

  1. Kodieren Sie Ihre Verbindungszeichenfolge nicht hart. Verschieben Sie es stattdessen in eine Konfigurationsdatei.
  2. Fügen Sie keine Klartext-Passwörter in Konfigurationsdateien oder Quellcode ein. Es gibt verschiedene Lösungen wie Windows-Authentifizierung, Zertifikate oder kennwortgeschützt durch die Windows Data Protection API .
  3. Entsorgen Sie IDisposable nicht einfach Instanzen durch Aufrufen von IDisposable.Dispose() . Verwenden Sie stattdessen den using Anweisung, Ressourcen auch im Ausnahmefall freizugeben.
  4. Erstellen Sie keine SQL-Anweisungen mit String-Manipulationstechniken. Verwenden Sie stattdessen SqlParameter um SQL-Injection-Angriffe zu verhindern.
  5. Speichern Sie keine Klartext-Passwörter in einer Datenbank. Speichern Sie stattdessen zumindest gesalzene Hashes der Passwörter und verwenden Sie eine langsame Hash-Funktion, nicht MD5 oder ein Mitglied der SHA-Familie.
  6. Sie können IDbCommand.ExecuteScalar um ein skalares Ergebnis abzurufen und die Verwendung eines Datenlesegeräts zu vermeiden.
  7. Einen booleschen Wert mit true vergleichen oder false ist überflüssig und fügt Ihrem Code nur Rauschen hinzu. Statt if (reader.IsDBNull(0) == true) Sie können einfach if (reader.IsDBNull(0)) verwenden . Dasselbe gilt für if (reader.Read() != false) was äquivalent zu if (reader.Read() == true) ist und damit auch if (reader.Read()) .
  8. Verwendung eines O/R-Mappers wie Entity Framework wird normalerweise der Interaktion mit der Datenbank auf der Ebene von SQL-Befehlen vorgezogen.