none
Connection à MySQL distant RRS feed

  • Question

  • Bonjour, 

     

    Je tentais pour la première fois de créer une connexion avec un serveur MySQL, donc voila mon code initial (en console) :

     static void Main(string[] args)
            {
                SqlConnection connect;
                SqlCommand cmd;
                string connectionLine;
    
                //Crée un string de connexion :
                connectionLine = "Data source=localhost; user ID=root; password=123456789;";
    
    
                connect = new SqlConnection(connectionLine);
    
                cmd = new SqlCommand();
    
                try
                {
                    //Crée une connection
    
                    cmd.Connection = connect;
                    Console.WriteLine("Connection crée");
    
                    //Ouvre la connection
                    cmd.Connection.Open();
                    Console.WriteLine("Connection ouverte");
                }
                catch (NullReferenceException ex)
                {
                    Console.WriteLine("Error: {0}" + ex.ToString());
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }
                Console.ReadLine();
            }
    

    Et j'obtiens cela : (dans la console)

    J'ai analyse un peu et je remarque cette ligne :

    "L'instance c'est produite lors de l'établissement d'une connection à SQL Server. Le serveur est introuvable ou inaccessible [...]" (en rouge sur l'image.)

    Je n'est pas "SQL Server", j'utilise wampserver et tout fonctionne nickel avec mon autre script PHP, j'ai également essayer de chercher sur Internet mais en vain. Si vous pouviez m'aider ce serait apprécié :), je veux pouvoir établir une connexion avec n'importe quel serveur (tant que je fourni les données de connexion ;) ).

     

    Merci d'avance :)


    Cordiallement Édouard
    mardi 31 janvier 2012 02:13

Réponses

  • Bonjour,

    Il faut souligner qu'il n'est pas nécessaire d'utiliser ODBC. On peut utiliser le driver natif de MySQL pour ADO .NET sur le site officiel : http://www.mysql.com/downloads/connector/net/

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Proposé comme réponse Ciprian Duduiala mercredi 1 février 2012 08:19
    • Non proposé comme réponse Édouard mercredi 1 février 2012 13:08
    • Marqué comme réponse Édouard mercredi 1 février 2012 13:08
    mardi 31 janvier 2012 13:28
    Modérateur
  • Bonjour,

    Oui. Mais vous pouvez déployer l'assembly directement dans le répertoire de votre application.

    Dans tous les cas (ODBC ou connecteur .NET) il faudra installer le client MySQL sur les postes du client (il me semble que c'est juste une DLL qui s'appelle libMySql.dll). Il suffira donc de livrer aussi cette DLL avec votre application.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Proposé comme réponse Ciprian Duduiala mercredi 1 février 2012 08:19
    • Non proposé comme réponse Édouard mercredi 1 février 2012 13:08
    • Marqué comme réponse Édouard mercredi 1 février 2012 13:08
    mardi 31 janvier 2012 23:26
    Modérateur
  • Bonjour,

    Oui, plus le driver .NET natif qui s'appelle MySql.Data.dll (à vérifier).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Marqué comme réponse Édouard mercredi 1 février 2012 13:08
    mercredi 1 février 2012 08:04
    Modérateur

Toutes les réponses

  • Bonjour,

    Le souci dans ton code est que tu utilises les classes ADO.NET spécifiques à SQL Server (qui sont dans le namespace System.Data.SqlClient). On les reconnait au fait qu'elles commencent toutes par "Sql"

    Pour te connecter à un server MySQL à partir de ton appli, il te faut utiliser ODBC : dans le namespace System.Data.Odbc.Les classes qui vont bien commencent toutes pas "Odbc"

    Le code suivant devrait un peu mieux fonctionner : 

     

     

            private static void Main(string[] args)
            {
                OdbcConnection connect;
                OdbcCommand cmd;
                string connectionLine;
    
                //Crée un string de connexion :
                connectionLine = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;DATABASE=TaBaseDeDonnées; user ID=root; password=123456789;";
    
                connect = new OdbcConnection(connectionLine);
    
                cmd = new OdbcCommand();
    
                try
                {
                    //Ouvre la connection
                    connect.Open();
    
                    Console.WriteLine("Connection ouverte");
                }
                catch (NullReferenceException ex)
                {
                    Console.WriteLine("Error: {0}" + ex.ToString());
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }
                Console.ReadLine();
            }


    EDIT : J'ai oublié de le mentionner, mais au cas où... Tu noteras que j'ai spécifié le nom du driver à utiliser dans la chaine de connexion. Si celui-ci ne convient pas, n'hésite pas à le remplacer par le nom du driver installé sur ta machine (Panneau de config > Outils d'administration > Sources de données ODBC > Drivers).

    Amuse toi bien !

     

    Cordialement,

    Sébastien


    Sébastien Putier
    Consultant - Formateur technologies Microsoft
    Blog : http://sputier.wordpress.com
    MCTS Développement d'application Windows 4.0 / Data Access 4.0
    Si un post vous parait utile, n'oubliez pas de le marquer comme utile. S'il répond à votre question, n'oubliez pas de le marquer comme réponse.
    mardi 31 janvier 2012 07:56
  • Bonjour,

     

    Ne marche toujours pas :/ j'ai fouillé un peu mais encore ne vain ... bref voici  ma nouvelle erreur.

     

     

     

    EDIT: J'ai trouvé ce tutorial : http://www.codeproject.com/Articles/43438/Connect-C-to-MySQL et j'ai remarquer qu'il utilise : Connector/NET version 6.1 ,  je tiens a préciser que mon but est que n'importe quel utilisateur puisse utiliser mon programme, sans avoir à installer d'application supplémentaire. De mon coté, installer des extensions ça ne me dérange pas, tant que ça n'affecte pas les autres utilisateur de mon programme.


    Merci d'avance ;P

    Et merci encore pour ta réponse Sébastien Putier :)


    Cordiallement Édouard
    • Modifié Édouard mardi 31 janvier 2012 12:58
    mardi 31 janvier 2012 12:44
  • Bonjour,

    Il faut souligner qu'il n'est pas nécessaire d'utiliser ODBC. On peut utiliser le driver natif de MySQL pour ADO .NET sur le site officiel : http://www.mysql.com/downloads/connector/net/

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Proposé comme réponse Ciprian Duduiala mercredi 1 février 2012 08:19
    • Non proposé comme réponse Édouard mercredi 1 février 2012 13:08
    • Marqué comme réponse Édouard mercredi 1 février 2012 13:08
    mardi 31 janvier 2012 13:28
    Modérateur
  • Bonjour,

    Il faut souligner qu'il n'est pas nécessaire d'utiliser ODBC. On peut utiliser le driver natif de MySQL pour ADO .NET sur le site officiel : http://www.mysql.com/downloads/connector/net/

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5

    D'accord, mais est-ce que les utilisateurs devront eu aussi installer ce drivers pour utiliser mon programme ?

     


    Cordiallement Édouard
    mardi 31 janvier 2012 21:33
  • Bonjour,

    Oui. Mais vous pouvez déployer l'assembly directement dans le répertoire de votre application.

    Dans tous les cas (ODBC ou connecteur .NET) il faudra installer le client MySQL sur les postes du client (il me semble que c'est juste une DLL qui s'appelle libMySql.dll). Il suffira donc de livrer aussi cette DLL avec votre application.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Proposé comme réponse Ciprian Duduiala mercredi 1 février 2012 08:19
    • Non proposé comme réponse Édouard mercredi 1 février 2012 13:08
    • Marqué comme réponse Édouard mercredi 1 février 2012 13:08
    mardi 31 janvier 2012 23:26
    Modérateur
  • Au  fond, lorsque je le publirais, j'aurais simplement à ajouter libMySql.dll dans mes fichiers ? (avec le .exe) ?
    Cordiallement Édouard
    mercredi 1 février 2012 00:10
  • Bonjour,

    Oui, plus le driver .NET natif qui s'appelle MySql.Data.dll (à vérifier).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    • Marqué comme réponse Édouard mercredi 1 février 2012 13:08
    mercredi 1 février 2012 08:04
    Modérateur