Probleme pour accéder a une base de donnée mysql [Résolu]

Signaler
Messages postés
94
Date d'inscription
vendredi 12 septembre 2008
Statut
Membre
Dernière intervention
19 mai 2012
-
Messages postés
94
Date d'inscription
vendredi 12 septembre 2008
Statut
Membre
Dernière intervention
19 mai 2012
-
Bonjour j'utilise Easy Php2.0b1, avec Mysql 5.0.22, je souhaiterais réaliser un logiciel de gestion d'un club de football.
J'ai télécharger un installer d'un driver http://dev.mysql.com/downloads/connector/net/5.0.html afin de pouvoir accéder a cette base.
Auparavant je travaillais avec Access , mais je souhaiterais changer.
Voila un extrait de mon code, du moins de la fonction qui me permet de me connecter et de réaliser des requêtes SQL.
Pour ce qui est de la chaîne de connexion, j'ai repris ce site http://www.connectionstrings.com/mysql

Imports System.Data.SqlClient
Imports System.Data.OleDb

Public Class F_Menu
 Public Function ReqSelection(ByVal req As String, ByVal nomTable As String) As DataTable
        Dim cnx As OleDbConnection
        Dim cmd As OleDbCommand
        Dim ds As DataSet  'Va être utilisé dans plusieurs procédures
        'Instanciation et ouverture d'une connexion
        cnx = New OleDbConnection("Driver={MySQL ODBC 5.0 Driver};Server=localhost;Database=logifoot; User=root;Password=;Option=3;")
        cnx.Open()
        'Instanciation d'un objet Command
        cmd = New OleDbCommand(req)
        cmd.Connection() = cnx
        'Instanciation d'un DataSet
        ds = New DataSet
        'Instanciation d'un DataAdapter
        'Déclaration Objet DataAdapter
        Dim da As OleDbDataAdapter
        da = New OleDbDataAdapter()
        da.SelectCommand = cmd 'L'objet Command contient l'instruction SQL
        da.Fill(ds, nomTable)  'Remplissage d'une table Destination dans le  DataSet à partir du DataAdapter
        Return ds.Tables(nomTable)
    End Function
End class

Lorsque je teste mon début d'application, j'obtiens ce message d'erreur:
Un fournisseur OLE DB n'était pas spécifié dans ConnectionString. Par exemple, 'Provider=SQLOLEDB;'.

Donc je pense que mon Imports System.Data.OleDb est spécifique à acess et donc inutile ici et que mes oledbadapter() doivent être remplacé par une équivalence pour une bdd mysql.

Est ce que quelqu'un peut m'aider.
Merci

10 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Il faut probablement que tu rajoute la référence dans ton projet.

Menu Projet/Propriété, onglet Références, tu fais Ajouter. Dans l'onglet .Net tu choisis la référence qui doit s'appeller, je pense, System.Data.MySqlClient

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
D'une part, tu n'as pas besoin de SQLClient. Les connecteurs de SQLClient sont à utiliser avec Microsoft SQLServer, ce n'est pas ton cas.

Les connecteurs OLEdb sont à utiliser pour toute connection qui n'est pas sur Oracle, SQLServer et qui ne passe pas par une source ODBC.

Dans le cas présent, tu utilise le driver ODBC de MySql, tu devrais peut-etre donc essayer d'utiliser les connecteurs ODBC à la place de OLEdb.

Imports System.Data.Odbc

Public Class F_Menu
 Public Function ReqSelection(ByVal req As String, ByVal nomTable As String) As DataTable
        Dim cnx As OdbcConnection
        Dim cmd As OdbcCommand
        Dim ds As DataSet  'Va être utilisé dans plusieurs procédures
        'Instanciation et ouverture d'une connexion
       
cnx = New OdbcConnection("Driver={MySQL ODBC 5.0
Driver};Server=localhost;Database=logifoot;
User=root;Password=;Option=3;")
        cnx.Open()
        'Instanciation d'un objet Command
        cmd = New OdbcCommand(req)
        cmd.Connection() = cnx
        'Instanciation d'un DataSet
        ds = New DataSet
        'Instanciation d'un DataAdapter
        'Déclaration Objet DataAdapter
        Dim da As OdbcDataAdapter
        da = New OdbcDataAdapter()
        da.SelectCommand = cmd 'L'objet Command contient l'instruction SQL
        da.Fill(ds, nomTable)  'Remplissage d'une table Destination dans le  DataSet à partir du DataAdapter
        Return ds.Tables(nomTable)
    End Function
End class

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Messages postés
94
Date d'inscription
vendredi 12 septembre 2008
Statut
Membre
Dernière intervention
19 mai 2012

Merci beaucoup pour ta reponse casy, j'ai essayé avec ton code, voila l'erreur qui s'affiche dorénavant:

ERROR [IM002] [Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non spécifié
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Ok, donc en fouillant sur le site de MySQL, je pense avoir compris.

Le driver que tu as installer a dû te rajouter un namespace dans VisualStudio. Donc à la place de System.Data.Oledb ou System.Data.Odbc, tu dois avoir aussi System.Data.MySQLClient
C'est donc qu'il va falloir utiliser. Mais il va donc falloir aussi changer la chaine de connection :

 Imports System.Data.MySqlClient
Public Class F_Menu
 Public Function ReqSelection(ByVal req As String, ByVal nomTable As String) As DataTable
        Dim cnx As MySqlConnection
        Dim cmd As MySqlCommand
        Dim ds As DataSet  'Va être utilisé dans plusieurs procédures
        'Instanciation et ouverture d'une connexion
       
cnx = New MySqlConnection("Server=localhost;Database=logifoot;
User=root;Password=;")
        cnx.Open()
        'Instanciation d'un objet Command
        cmd = New MySqlCommand(req)
        cmd.Connection() = cnx
        'Instanciation d'un DataSet
        ds = New DataSet
        'Instanciation d'un DataAdapter
        'Déclaration Objet DataAdapter
        Dim da As MySqlDataAdapter
        da = New MySqlDataAdapter()
        da.SelectCommand = cmd 'L'objet Command contient l'instruction SQL
        da.Fill(ds, nomTable)  'Remplissage d'une table Destination dans le  DataSet à partir du DataAdapter
        Return ds.Tables(nomTable)
    End Function
End class

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Messages postés
94
Date d'inscription
vendredi 12 septembre 2008
Statut
Membre
Dernière intervention
19 mai 2012

Désormais, il me souligne tout ce que tu as mis en rouge :
Imports System.Data.MySqlClient
MySqlConnection
MySqlCommand
MySqlConnection
MySqlCommand
MySqlDataAdapter
MySqlDataAdapter()

Avertissement    1    L'espace de noms ou le type spécifié dans les Imports 'System.Data.MySqlClient' ne contient aucun membre public ou est introuvable. Vérifiez que l'espace de noms ou le type est défini et qu'il contient au moins un membre public. Vérifiez que le nom de l'élément importé n'utilise pas d'autres alias.

Erreur    2    Type 'MySqlConnection' non défini. (même erreur pour les suivant)
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut,


Il faut installer le provider mysql et ajouter les references sur les DLL

http://dev.mysql.com/downloads/connector/net/5.2.html
Messages postés
94
Date d'inscription
vendredi 12 septembre 2008
Statut
Membre
Dernière intervention
19 mai 2012

j'ai installé le provider j'utilise le 5.1 enfin j'ai installé également le 5.2

Comment ajouter les références sur les DLL?
Messages postés
94
Date d'inscription
vendredi 12 septembre 2008
Statut
Membre
Dernière intervention
19 mai 2012

merci casy j'avais pas vu ton message.
bon cela ne fonctionne toujours pas mais bon. :s
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Il est ou le probleme?
Messages postés
94
Date d'inscription
vendredi 12 septembre 2008
Statut
Membre
Dernière intervention
19 mai 2012

Cela fonctionne désormais, merci beaucoup vous deux, vous m'avez énormément aidé, je vais pouvoir avancé maintenant.
Un grand merci à casy, ton aide m'a été très précieuse

Imports MySql.Data.MySqlClient
Imports MySql.Data

Public Class F_Menu
    Public Function ReqSelection(ByVal req As String, ByVal nomTable As String) As DataTable
        Dim cnx As MySqlConnection
        Dim cmd As MySqlCommand
        Dim ds As DataSet  'Va être utilisé dans plusieurs procédures
        'Instanciation et ouverture d'une connexion
        cnx = New MySqlConnection("Server=localhost;Database=logifoot; User=root;Password=;")
        cnx.Open()
        'Instanciation d'un objet Command
        cmd = New MySqlCommand(req)
        cmd.Connection() = cnx
        'Instanciation d'un DataSet
        ds = New DataSet
        'Instanciation d'un DataAdapter
        'Déclaration Objet DataAdapter
        Dim da As MySqlDataAdapter
        da = New MySqlDataAdapter()
        da.SelectCommand = cmd 'L'objet Command contient l'instruction SQL
        da.Fill(ds, nomTable)  'Remplissage d'une table Destination dans le  DataSet à partir du DataAdapter
        Return ds.Tables(nomTable)
    End Function
End Class