6 votes

Comment connecter correctement la base de données MySQL avec une application C# ?

Je suis en train d'essayer de connecter ma base de données MySQL avec C# mais la connexion n'est pas établie.

Je suis en train d'utiliser

static string connstring = @"server=my.live.ip;userid=user;password=123;database=db_name;port=3306";

mais je reçois toujours

L'authentification à l'hôte 'my.live.ip' pour l'utilisateur 'user' en utilisant la méthode 'mysql_native_password' a échoué avec le message : Accès refusé pour l'utilisateur 'user'@'202.xxx.xxx.xxx' (utilisant le mot de passe : NON)`

J'ai cherché mais n'ai trouvé aucune solution adaptée(s).

P.S: L'IP en direct que j'utilise est celle d'Azure. c'est-à-dire que la base de données MySQL est hébergée sur le serveur Azure via xampp

Toute aide serait grandement appréciée

0voto

adarshcool Points 31
using System;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;

namespace AzureMySqlExample
{
    class MySqlCreate
    {
        static async Task Main(string[] args)
        {
            var builder = new MySqlConnectionStringBuilder
            {
                Server = "VOTRE-SERVEUR.mysql.database.azure.com",
                Database = "VOTRE-BASE-DE-DONNEES",
                UserID = "UTILISATEUR@VOTRE-SERVEUR",
                Password = "MOT-DE-PASSE",
                SslMode = MySqlSslMode.Required,
            };

            using (var conn = new MySqlConnection(builder.ConnectionString))
            {
                Console.WriteLine("Ouverture de la connexion");
                await conn.OpenAsync();

                using (var command = conn.CreateCommand())
                {
                    command.CommandText = "DROP TABLE IF EXISTS inventaire;";
                    await command.ExecuteNonQueryAsync();
                    Console.WriteLine("Table supprimée (si elle existait)");

                    command.CommandText = "CREATE TABLE inventaire (id serial PRIMARY KEY, nom VARCHAR(50), quantité INTEGER);";
                    await command.ExecuteNonQueryAsync();
                    Console.WriteLine("Table créée avec succès");

                    command.CommandText = @"INSERT INTO inventaire (nom, quantité) VALUES (@nom1, @quantité1),
                        (@nom2, @quantité2), (@nom3, @quantité3);";
                    command.Parameters.AddWithValue("@nom1", "banane");
                    command.Parameters.AddWithValue("@quantité1", 150);
                    command.Parameters.AddWithValue("@nom2", "orange");
                    command.Parameters.AddWithValue("@quantité2", 154);
                    command.Parameters.AddWithValue("@nom3", "pomme");
                    command.Parameters.AddWithValue("@quantité3", 100);

                    int rowCount = await command.ExecuteNonQueryAsync();
                    Console.WriteLine(String.Format("Nombre de lignes insérées={0}", rowCount));
                }

                // La connexion sera fermée par le bloc 'using'
                Console.WriteLine("Fermeture de la connexion");
            }

            Console.WriteLine("Appuyez sur RETOUR pour quitter");
            Console.ReadLine();
        }
    }
}

Vous pouvez consulter le lien ci-dessous pour créer et accéder à une base de données MySQL en utilisant c# https://docs.microsoft.com/en-us/azure/mysql/connect-csharp

0voto

Code Name Jack Points 1022

Votre mot de passe commence-t-il par # ou un caractère similaire et le stockez-vous dans un fichier de configuration tel que ini

Comme certains types de configurations considèrent certains des caractères spéciaux comme des commentaires ou autre chose, le mot de passe devient null.

Pour vérifier, changez votre mot de passe en alphanumérique une fois et testez. J'ai rencontré ce problème avec mes mots de passe lorsque j'utilisais quelque chose comme password=#strongP

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X