Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment se connecter à Mysql en C# ?

Votre problème immédiat est probablement soit une chaîne de connexion incorrecte, soit le serveur de base de données n'est pas disponible. La chaîne de connexion devrait ressembler à ceci

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

avec <username> et <password> remplacé par vos valeurs réelles.

En plus de cela, votre code a plusieurs problèmes et vous devriez certainement les examiner s'il est destiné à devenir du code de production et probablement même s'il ne s'agit que d'un projet jouet pour apprendre quelque chose. La liste est dans un ordre particulier et peut ne pas être exhaustive.

  1. Ne codez pas en dur votre chaîne de connexion. Déplacez-le plutôt vers un fichier de configuration.
  2. N'incluez pas de mots de passe en texte brut dans les fichiers de configuration ou le code source. Il existe différentes solutions comme authentification windows, certificats ou mots de passe protégés par l'API de protection des données Windows .
  3. Ne vous contentez pas de jeter IDisposable instances en appelant IDisposable.Dispose() . Utilisez plutôt le using déclaration pour libérer des ressources même en cas d'exceptions.
  4. Ne créez pas d'instructions SQL à l'aide de techniques de manipulation de chaînes. Utilisez plutôt SqlParameter pour empêcher les attaques par injection SQL.
  5. Ne stockez pas de mots de passe en texte brut dans une base de données. Au lieu de cela, stockez au moins les hachages salés des mots de passe et utilisez une fonction de hachage lente, pas MD5 ou un membre du Famille SHA.
  6. Vous pouvez utiliser IDbCommand.ExecuteScalar pour récupérer un résultat scalaire et éviter d'utiliser un lecteur de données.
  7. Comparer une valeur booléenne avec true ou false est redondant et ne fait qu'ajouter du bruit à votre code. Au lieu de if (reader.IsDBNull(0) == true) vous pouvez simplement utiliser if (reader.IsDBNull(0)) . Il en va de même pour if (reader.Read() != false) ce qui est équivalent à if (reader.Read() == true) et donc aussi if (reader.Read()) .
  8. Utiliser un mappeur O/R tel que Entity Framework est généralement préféré à l'interaction avec la base de données au niveau des commandes SQL.