Problème ffichage Bdd MySql

Signaler
Messages postés
22
Date d'inscription
vendredi 1 mai 2009
Statut
Membre
Dernière intervention
11 mai 2009
-
Messages postés
22
Date d'inscription
vendredi 1 mai 2009
Statut
Membre
Dernière intervention
11 mai 2009
-
Bonjour je debute en C# et je voudrai savoir pourquoi rien ne s'afiche dans ma combobox, donc voicimon code:

using

System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.Common;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using Microsoft.Data;

using Microsoft.Data.Odbc;

namespace projet_Bts{

public
partial
class
Form1 :
Form{

public Form1(){

InitializeComponent();

}

private
void button2_Click(
object sender,
EventArgs e){

Application.Exit();}

private
void comboBox1_SelectedIndexChanged(
object sender,
EventArgs e){

string connStr =
"DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;UID=PDA;DATABASE=gestion;Password=0000";

OdbcConnection Conn =
new
OdbcConnection(connStr);

OdbcDataReader reader =
null;

try{

Conn.Open();

OdbcCommand command =
new
OdbcCommand(
"Select NumTable from table where 1");command.Connection = Conn;

reader = command.ExecuteReader();

int i;

while (reader.Read()){

for (i = 0; i < reader.FieldCount; i++){

comboBox1.Items.Add(

string.Format(
"{0}", reader[
"NumTable"]));}

}

}

catch (
Exception ex){

MessageBox.Show(ex.ToString());}

finally{

if (reader !=
null)reader.Close();

if (Conn.State ==
ConnectionState.Open)Conn.Close();

}

}

Merci a toute les personnes qui pourront m'aider

6 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
Salut

Première remarque : ta boucle for (i = 0; i < reader.FieldCount; i++)
ne sert à rien tout simplement car tu n'as qu'un seul champ (NumTable) que tu récupères avec ta requête.

Deuxième remarque : ta requête SQL comporte une erreur (bizarre que tu n'aies pas de message d'erreur dans ta messagebox).
"WHERE 1" ça n'est pas bon. Tu peux soit ne rien marquer (SELECT NumTable FROM Table) soit mettre une réelle condition comme "WHERE 1=1"

Dernière petite remarque, plutôt que de faire string.Format(
"{0}", reader[
"NumTable"])
, il suffit de faire reader["NumTable"].ToString(); ce qui va t'éviter l'appel à une fonction en plus.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Messages postés
22
Date d'inscription
vendredi 1 mai 2009
Statut
Membre
Dernière intervention
11 mai 2009

Salut


Krimog je te remercie pour ton aide, j'ai modifier ce que tu as dit, mais rien ne s'affiche, j'ai crée un bouton de test pour ma chaine de connexion elle fonctionne , mais apparamment lorsque j'utilise le combobox la connexion ne semble pas s'ouvrir.


Merci de l'aide que tu tente de m'apporter;
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
43
Es-tu bien sûr que ta table n'est pas tout simplement vide ?
Essaie ce genre de chose :

OdbcCommand c = new ObdcCommand("SELECT COUNT(NumTable) FROM table");
c.Connection = Conn;
MessageBox.Show(c.ExecuteScalar().ToString());

Si tu vois 0, c'est que ta table est vide. Il est donc normal que ta combo ne se remplisse pas.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Messages postés
22
Date d'inscription
vendredi 1 mai 2009
Statut
Membre
Dernière intervention
11 mai 2009

merci krimog
j'essaye et je te dit koi
Messages postés
22
Date d'inscription
vendredi 1 mai 2009
Statut
Membre
Dernière intervention
11 mai 2009

j'ai essayé et une erreur 42000 c'est produite apparement ce serai une erreur de syntaxe SQL
Messages postés
22
Date d'inscription
vendredi 1 mai 2009
Statut
Membre
Dernière intervention
11 mai 2009

j'ai modifier comme cela:

private

void button3_Click(
object sender,
EventArgs e){

string connStr =
"DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;UID=PDA;DATABASE=gestion;Password=0000";

OdbcConnection Conn =
new
OdbcConnection(connStr);

try{

Conn.Open();

OdbcCommand c =
new
OdbcCommand(
"SELECT count(*) FROM `table` WHERE 1");c.Connection = Conn;

MessageBox.Show(c.ExecuteScalar().ToString());}

finally{

if (Conn.State ==
ConnectionState.Open)Conn.Close();

}

}

la requete me retourne 6
j'ai essayé avec le combobox toujours rien c'est bizarre!
Merci de ton aide Krimog