Je ne peux pas visualiser le résultat de mes requetes sur les écrans [Résolu]

Signaler
Messages postés
20
Date d'inscription
jeudi 9 décembre 2010
Statut
Membre
Dernière intervention
16 novembre 2011
-
Messages postés
20
Date d'inscription
jeudi 9 décembre 2010
Statut
Membre
Dernière intervention
16 novembre 2011
-
Bonjour,

Je suis en train de développer une petite application de gestion en VB .Net (Visual 2008) avec une base des données MySQL. Mon problème est le suivant, je n'arrive pas à visualiser le résultat de ma requete sur mon écran. Voici un exemple de ce que je fais:

Dim ConnectionString As String = "driver={MYSQL 5.1 ODBC Driver};database=ma_bd;user=root;password=mon_pass"
Dim MaRequeteSelect "select code, description from PRODUIT where code 'code_11'"
Using connection As New OdbcConnection (ConnectionString)
Dim Macommand As New OdbcCommand(MaRequeteSelect , connection)
connection.open()
Dim MonReader As OdbcDataReader = command.ExecuteReader()
While MonReader.Read()
    Form1.TextBox1.Text = MonReader(0).ToString()
    Form1.TextBox2.Text = MonReader(1).ToString()
End While
MonReader.Close()
connection.Close()
End using

J'ai essayé ceci avec une BD Access et ça fonctionne bien (Bien sûr avec OleDb et non Odbc) ... Quel est le problème ici?

------------
Crdt,
ABZ

5 réponses

Messages postés
20
Date d'inscription
jeudi 9 décembre 2010
Statut
Membre
Dernière intervention
16 novembre 2011

Bonjour,

J'ai corrigé le problème: J'ai remplacé "@CodeProduit" par ? et c'est bon ... Donc la bonne source est:


Dim ConnectionString As String = "driver={MYSQL 5.1 ODBC Driver};database=ma_bd;user=root;password=mon_pass"
Dim MaRequeteSelect "select code, description from PRODUIT where code ? ;"
Using connection As New OdbcConnection (ConnectionString)
Dim Macommand As New OdbcCommand(MaRequeteSelect , connection)
With Macommand.Parameters
   .AddWithValue("?", strCodeProduit) 'strCodeProduit est une varibale String qui contient mon code.
End With
connection.open()
Dim MonReader As OdbcDataReader = command.ExecuteReader()
While MonReader.Read()
    Form1.TextBox1.Text = MonReader(0).ToString()
    Form1.TextBox2.Text = MonReader(1).ToString()
End While
MonReader.Close()
connection.Close()
End using



------------
Crdt,
ABZ
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Salut,

as-tu une exception levée ?
Es-tu passé en mode debug pour voir si ton reader n'était pas vide ?
Et au cas où, as-tu vérifier que ton dernier enregistrement a un code et une description non vide ?

Plus les vérifications habituelles sur la chaîne de connexion et la requête.
Messages postés
20
Date d'inscription
jeudi 9 décembre 2010
Statut
Membre
Dernière intervention
16 novembre 2011

Salut Jopop

Pour répondre à tes questions:

as-tu une exception levée ? [ABZ] ==> Non, aucune exeception levée
Es-tu passé en mode debug pour voir si ton reader n'était pas vide ? [ABZ] ==> Non, je n'ai pas fais, je vais le faire ce soir inchallah.
Et au cas où, as-tu vérifier que ton dernier enregistrement a un code et une description non vide ? [ABZ] ==> Bein, Oui, j'ai fait le meme select sur MySQL et j'ai bien un résultat.

Plus les vérifications habituelles sur la chaîne de connexion et la requête. [ABZ] ==> J'ai rencontré ce type d'erreurs au début mais une fois qu'ils sont réglés, tout fonctionne bien, mais sans bon réultat !!

[ABZ] ==> A noter, j'utilise des requetes parametrées, c'est à dire c'est comme suit:

Dim ConnectionString As String = "driver={MYSQL 5.1 ODBC Driver};database=ma_bd;user=root;password=mon_pass"
Dim MaRequeteSelect "select code, description from PRODUIT where code @codeProduit;"
Using connection As New OdbcConnection (ConnectionString)
Dim Macommand As New OdbcCommand(MaRequeteSelect , connection)
With Macommand.Parameters
   .AddWithValue("@codeProduit", strCodeProduit) 'strCodeProduit est une varibale String qui contient mon code.
End With
connection.open()
Dim MonReader As OdbcDataReader = command.ExecuteReader()
While MonReader.Read()
    Form1.TextBox1.Text = MonReader(0).ToString()
    Form1.TextBox2.Text = MonReader(1).ToString()
End While
MonReader.Close()
connection.Close()
End using


Et franchement dit, je n'ai pas essayé avec des requêtes simples (sans paramétrés).


------------
Crdt,
ABZ
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Je vois pas de souci dans l'utilisation du paramètre.
Bon ben plus qu'à attendre que tu testes le mode debug.
Messages postés
20
Date d'inscription
jeudi 9 décembre 2010
Statut
Membre
Dernière intervention
16 novembre 2011

Bonjour,

Je pense que mon probleme est dans l'utilisation du parametre. En utilisant cette forme:

Dim MaRequeteSelect "select code, description from PRODUIT where code @codeProduit;"
Using connection As New OdbcConnection (ConnectionString)
Dim Macommand As New OdbcCommand(MaRequeteSelect , connection)
With Macommand.Parameters
.AddWithValue("@codeProduit", strCodeProduit) 'strCodeProduit est une varibale String qui contient mon code.
End With
'... etc
End using

Le reader ne contient aucun résultat. Par contre en utilisant cette forme:

Dim MaRequeteSelect "select code, description from PRODUIT where code '" &strcodeProduit & "';"
Using connection As New OdbcConnection (ConnectionString)
Dim Macommand As New OdbcCommand(MaRequeteSelect , connection)
'...etc
End using

Tout fonctionne bien !!!

Je pense que c'est bcp plus bien d'utiliser les requêtes parametrées (forme 1), c'est pour ça que j'insiste à les utiliser ...
Peut être le problème est dans le "@" ??!! Ceci n'est pas spécifique à Access? En effet, ça fonctionne bien avec une base Access comme ça !!

Merci pour vos réponses :-)

------------
Crdt,
ABZ