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 :

MySql avec C# : affecter une variable par la valeur obtenue par une requête


Sujet :

C#

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut MySql avec C# : affecter une variable par la valeur obtenue par une requête
    Bonjour,
    J'ai une bdd MySql... Je fais mes requêtes SQL avec c# (dot.net)

    dans ma bdd il y a un champ dans la table :
    1er champ : id (auto_increment, index (PRIMARY) donc unique)

    Il y aura plusieurs enregistrements/ligne dans cette table

    Ce que je vais faire,

    Chaque fois que je connecte à la bdd, par la requête [reqA], je vais obtenir la valeur du 1er champ, "id", du 1ere enregistrement/ 1ere ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT `chmp_chiffre` FROM `nov_fr_dev2` LIMIT 1;
    Ensuite je vais affecter ma variable [vChiffre] par cette valeur

    Ensuite je vais l'utiliser (par exemple je vais envoyer la valeur de cette variable par email.

    Après avoir utiliser vChiffre je vais faire une autre requête [reqB] pour supprimer 1ere enregistrement dans ma table que j'ai utilisé tout à l'heure

    Alors comment je peux affecter ma variable [vChiffre] par la valeur que j'ai obtenue par ma requête ?
    voici mon code du début :
    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
    		// connection bdd MySql pour recuperer code unique à envoyer l'utilisateur
                    string connBDDStr = "server=###.##.#.#;user=#######;database=toto;port=3306;password=###################;";
                    MySqlConnection connBDD = new MySqlConnection(connBDDStr);
     
                    connBDD.Open();
     
     
                    //DEV TEST
                    // selectionné le 1er engregistrement
                    string sqlBDD = "SELECT id FROM code_test LIMIT 1";
     
     
                    MySqlCommand cmdBDD = new MySqlCommand(sqlBDD, connBDD);
     
     
    		//***---------????????? comment je peux affecter ma variable [vChiffre] en C# ???
    				////////en php : ---------------------------- debut--------------------
     
    					// $req=  " select id 
    					// 		FROM $table_db  // $table_db c'est "code_test" 
    					// 		LIMIT 1";
    					// $rep =  mysql_query($req, $cnx) or die( mysql_error() ) ;  //info pour connection : $cnx = mysql_connect( "###.##.#.#", "#######", "###################" ) ;
     
     
    					// while($row=mysql_fetch_row($rep))
    					// {
    					// 	$vChiffre=$row[0];
     
    					// }	
     
    				//////////en php : ---------------------------- fin--------------------
     
     
    		cmdBDD.ExecuteNonQuery();
    		// je ferme la connexion
                    connBDD.Close();
    Merci et bonne journée

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int vChiffre = (int)cmdBDD.ExecuteScalar();
    Et d'une manière générale, tout est expliqué ici :
    http://dotnet.developpez.com/articles/ado1/csharp/

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut
    Merci tomlev,

    Super gentil...

    Bonne journée

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int vChiffre = (int)cmdBDD.ExecuteScalar();
    Bonjour Tomlev,
    J'ai un message d'erreur :

    Specified cast is not valid.
    Exception Details: System.InvalidCastException: Specified cast is not valid.

    Line 228: int vChiffre = (int)cmdBDD.ExecuteScalar();
    Pourquoi ?

    Bonne journée

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Bah c'est peut-être pas un int, il faut mettre le type C# qui correspond au type MySQL de la colonne...

    Si c'est effectivement un entier mais que tu es pas sûr du type exact, tu peux faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int vChiffre = Convert.ToInt32(cmdBDD.ExecuteScalar());

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Points : 155
    Points
    155
    Par défaut
    Ça marche Tomlev...

    Un grand merci...

    J'ai des questions puisque je suis curieux*:

    1er*: si dans mon BDD, il y avait 3 champs au lieu d'un
    par exemple*:

    Id, date, toto...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // selectionné le 1er engregistrement
                    string sqlBDD = "SELECT id, date, toto FROM code_test LIMIT 1";
     
     
                    MySqlCommand cmdBDD = new MySqlCommand(sqlBDD, connBDD);

    que dois faire ?


    2e*: en fait, dans mon 1er exemple, mon id type c'est varchar(5) donc ce n'est pas un entier...
    avec ton exemple, je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int vChiffre = Convert.ToInt32(cmdBDD.ExecuteScalar());
    ensuite il faut que je convertir en string pour afficher dans un TEXT box
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mPrmCcDd.Text = Convert.ToString(vChiffre);
    Ça marche, mais je me demande si on peut faire autrement au lieu de convertir 2 fois (1er en int 2e en string) ?
    merci encore

    bonne soirée

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/09/2014, 11h30
  2. Réponses: 1
    Dernier message: 09/09/2011, 16h38
  3. Réponses: 4
    Dernier message: 10/10/2010, 23h06
  4. Réponses: 5
    Dernier message: 04/12/2008, 15h58
  5. Valeur par defaut a partir d'une variable vba ?
    Par Alpha31 dans le forum Access
    Réponses: 2
    Dernier message: 06/06/2006, 16h00

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