IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Lecture d'une base de données en C# [Débutant]


Sujet :

C#

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 41
    Par défaut Lecture d'une base de données en C#
    Bonjour,

    En me connectant à une base de données MySQL, j'aimerai réussir à lire les informations d'une table pour les afficher.
    Étant (grand) débutant, j'ai d'abord parcouru le net pour trouver la façon de faire ça. J'ai donc identifié deux méthodes (évidemment ce ne sont peut-être ni les seules ni les meilleurs) :
    * la première repose sur DataReader (OdcbDataReader en l'occurrence). Problème, je n'arrive pas à trouver comment récupérer l'information qui se trouve dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string libelle = reader.GetString(3);
    * la seconde méthode repose sur le DataSet et le DataAdapter. D'après ce que j'ai compris, la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Controls.Add(table_donnees);
    devrait ajouter une grille avec les informations sur ma page, mais rien n'apparaît...

    Voici le code dans son ensemble :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.Configuration;
    using System.Data.Odbc;
    using System.Data;
    using System.Windows.Forms;
     
    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                OdbcDataAdapter mes_donnees = new OdbcDataAdapter();
                DataGrid table_donnees =new DataGrid();
                DataSet donnees_cache = new DataSet();
     
                //Récupération de la chaîne de connexion sur la base de données AEC_MYSQL dans le fichier de configuration
                string connection_mysql = WebConfigurationManager.ConnectionStrings["AEC_MYSQL"].ConnectionString;
     
                //Construction d'une connexion sur la BD
                OdbcConnection ma_connection = new OdbcConnection(connection_mysql);
     
                //Construction d'une requête
                OdbcCommand requete = new OdbcCommand("SELECT * FROM `AGENDA_EVT`", ma_connection);
     
                //Ouverture de la connexion sur la BD
                ma_connection.Open();
     
                mes_donnees.SelectCommand = requete;
                mes_donnees.Fill(donnees_cache);
     
                table_donnees.DataSource = donnees_cache;
     
                this.Controls.Add(table_donnees);
     
                //Exécution de la requête sur la BD 
                OdbcDataReader reader = requete.ExecuteReader();
     
                while (reader.Read())
                {
                    string libelle = reader.GetString(3);
                }
     
                //Fermeture de la connexion sur la BD
                ma_connection.Close();
     
                //Mise à jour du label
                //Label1.Text = libelle;
            }
            catch (OdbcException MyOdbcException) //Catch any ODBC exception ..
            {
                for (int i = 0; i < MyOdbcException.Errors.Count; i++)
                {
                    Console.Write("ERROR #" + i + "\n" +
                                  "Message: " +
                                  MyOdbcException.Errors[i].Message + "\n" +
                                  "Native: " +
                                  MyOdbcException.Errors[i].NativeError.ToString() + "\n" +
                                  "Source: " +
                                  MyOdbcException.Errors[i].Source + "\n" +
                                  "SQL: " +
                                  MyOdbcException.Errors[i].SQLState + "\n");
                }
            }
        }
    }
    Donc si quelqu'un pouvait m'apporter un peu d'aide sur l'une ou l'autre des méthodes (voire les deux), je lui en saurais grès.

    Nicolas

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 62
    Par défaut
    Je te conseil d'utiliser MysqlConnector qui est bien plus simple a utilisé avec beaucoup d'exemples présents sur la toile.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 41
    Par défaut
    Merci hussein47 pour cette réponse rapide, seulement MySQL Connector ne fonctionne pas avec les versions Express d'après ce que j'ai lu dans sa documentation.

    De plus je viens de comprendre pourquoi la méthode avec le DataReader ne fonctionnait pas. Voici la correction (ligne 47 - 48) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.Configuration;
    using System.Data.Odbc;
    using System.Data;
    using System.Windows.Forms;
     
    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                OdbcDataAdapter mes_donnees = new OdbcDataAdapter();
                DataGrid table_donnees =new DataGrid();
                DataSet donnees_cache = new DataSet();
     
                //Récupération de la chaîne de connexion sur la base de données AEC_MYSQL dans le fichier de configuration
                string connection_mysql = WebConfigurationManager.ConnectionStrings["AEC_MYSQL"].ConnectionString;
     
                //Construction d'une connexion sur la BD
                OdbcConnection ma_connection = new OdbcConnection(connection_mysql);
     
                //Construction d'une requête
                OdbcCommand requete = new OdbcCommand("SELECT * FROM `AGENDA_EVT`", ma_connection);
     
                //Ouverture de la connexion sur la BD
                ma_connection.Open();
     
                mes_donnees.SelectCommand = requete;
                mes_donnees.Fill(donnees_cache);
     
                table_donnees.DataSource = donnees_cache;
     
                this.Controls.Add(table_donnees);
     
                //Exécution de la requête sur la BD 
                OdbcDataReader reader = requete.ExecuteReader();
     
                while (reader.Read())
                {
                    string libelle = reader.GetString(3);
                    //Mise à jour du label
                    Label1.Text = libelle;
                }
     
                //Fermeture de la connexion sur la BD
                ma_connection.Close();
     
     
            }
            catch (OdbcException MyOdbcException) //Catch any ODBC exception ..
            {
                for (int i = 0; i < MyOdbcException.Errors.Count; i++)
                {
                    Console.Write("ERROR #" + i + "\n" +
                                  "Message: " +
                                  MyOdbcException.Errors[i].Message + "\n" +
                                  "Native: " +
                                  MyOdbcException.Errors[i].NativeError.ToString() + "\n" +
                                  "Source: " +
                                  MyOdbcException.Errors[i].Source + "\n" +
                                  "SQL: " +
                                  MyOdbcException.Errors[i].SQLState + "\n");
                }
            }
        }
    }
    En revanche, je n'arrive toujours pas à savoir pourquoi la première méthode ne me renvoie rien ...

  4. #4
    Membre éprouvé Avatar de Capitaine Kirk
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Mars 2005
    Messages : 98
    Par défaut
    Bonsoir

    Citation Envoyé par Philomelo Voir le message
    Merci hussein47 pour cette réponse rapide, seulement MySQL Connector ne fonctionne pas avec les versions Express d'après ce que j'ai lu dans sa documentation..
    Je crois me souvenir que si cela fonctionne (sous réserve ça fais longtemps) c'est juste que contrairement aux versions supérieures de visual studio tu ne peux pas créer la connexion à ta base de données avec le "designer" de cette façon , tu vas devoir tout faire par code.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 41
    Par défaut
    En effet, après avoir mis en place la version ODBC du connecteur, je me dis que la version .NET doit fonctionner aussi, mais je n'ai pas réussi.
    J'ai certainement fait une fausse manip, mais bon, avec ODBC cela fonctionne sans problème, et pour le moment cela répond à mes besoins.

    Merci pour vos réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Lecture d'une base de données
    Par nicolasSENAME dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/09/2008, 08h23
  2. Réponses: 2
    Dernier message: 29/04/2008, 13h59
  3. VBA : lecture d'une base de données SQL *.gdb
    Par _Nimy_ dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/04/2008, 11h16
  4. [C#]Lecture d'une base de donnée
    Par crawling5 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 11/04/2006, 17h53
  5. [VB]Lecture dans une base de donnée posant problème
    Par polo-j dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 23/03/2006, 00h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo