Mysql
 sql >> Database >  >> RDS >> Mysql

Come connettersi a MySQL usando C#?

Il tuo problema immediato è probabilmente una stringa di connessione errata o il server del database non è disponibile. La stringa di connessione dovrebbe essere qualcosa del genere

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

con <username> e <password> sostituiti con i tuoi valori effettivi.

Oltre a ciò il tuo codice ha diversi problemi e dovresti assolutamente esaminarli se questo è destinato a diventare codice di produzione e probabilmente anche se questo è solo un progetto giocattolo per imparare qualcosa. L'elenco è in ordine particolare e potrebbe non essere completo.

  1. Non codificare la stringa di connessione. Invece spostarlo in un file di configurazione.
  2. Non includere password in testo normale nei file di configurazione o nel codice sorgente. Esistono varie soluzioni come autenticazione di Windows, certificati o protetto da password dall'API di protezione dei dati di Windows .
  3. Non smaltire semplicemente IDisposable istanze chiamando IDisposable.Dispose() . Utilizza invece using dichiarazione per liberare risorse anche in caso di eccezioni.
  4. Non creare istruzioni SQL utilizzando tecniche di manipolazione delle stringhe. Utilizza invece SqlParameter per prevenire attacchi SQL injection.
  5. Non memorizzare le password in testo normale in un database. Invece almeno archiviare gli hash salati delle password e utilizzare una funzione di hash lenta, non MD5 o un membro del Famiglia SHA.
  6. Puoi utilizzare IDbCommand.ExecuteScalar per recuperare un risultato scalare ed evitare di utilizzare un lettore di dati.
  7. Confronto di un valore booleano con true o false è ridondante e aggiunge solo rumore al tuo codice. Invece di if (reader.IsDBNull(0) == true) puoi semplicemente usare if (reader.IsDBNull(0)) . Lo stesso vale per if (reader.Read() != false) cosa equivale a if (reader.Read() == true) e quindi anche if (reader.Read()) .
  8. Utilizzo di un mappatore O/R come Entity Framework di solito è preferito all'interazione con il database a livello di comandi SQL.