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 :

Remplir une base MySql à partir des textBox


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Remplir une base MySql à partir des textBox
    Bonjour,

    J'utilise Visual Studio 2010 (C#.Net) et le serveur MySql 5.5.
    J'ai essayé pas mal de fois d'insérer des données à partir des champs textBox et le problème revient à comment se reférer aux valeurs textuelles qui existent dans les textBox.
    J'ai utilisé le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    string query = "INSERT INTO test (CIN, Name) VALUES(?, ?)"; 
    int CIN = testint; 
    string Name = name; 
     
    //open connection 
    this.Initialize(); 
    //create command and assign the query and connection from the constructor 
    MySqlCommand cmd = new MySqlCommand(query, conn); 
    //Execute command 
    cmd.ExecuteNonQuery(); 
    //close connection 
    conn.Close();
    Le programme retourne comme bug:
    You have an error in your SQL Syntax. check the manual that corresponds to your MySql server version for the right syntax to use near '?,?)' at line 1.
    C'est quoi l'erreur dans ce code?
    Merci d'avance de m'aider.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Je verrai plutot un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int ValChampCIN = 25; 
    string ValChampName = "\"" + "Dupont"+ "\"" ;
    string query = "INSERT INTO test (ChampCIN, ChampName) VALUES("+ValChampCIN+","+ValChampName+")" ;
    Ensuite pour améliorer, voir les réquètes paramétrées.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Chevaan Voir le message
    C'est quoi l'erreur dans ce code?
    Aidez moi et merci d'avance
    Il n'y a pas d'affectation des paramétres à la commande.
    Les variables CIN et Name ne sont pas affectées à la requête (par contre, j'ignore si "?" est bien le subsituteur de paramètres de MySql).

    Donc, ajouter des paramètres avec ces variables dans l'objet commande.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  4. #4
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Points : 163
    Points
    163
    Par défaut
    Bonjour,

    essayes ça, et dis nous , si ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SqlCommand sc = new SqlCommand("INSERT INTO test (ChampCIN, ChampName) VALUES (@CIN,@ChampName)",conn); 
     
    sc.Parameters.Add("@CIN", SqlDbType.VarChar);
    sc.Parameters.Add("@ChampName", SqlDbType.VarChar);
     
    sc.Parameters["@CIN"].Value = ChampCIN.Text;
    sc.Parameters["@ChampName"].Value = ChampName.Text;
     
    sc.ExecuteNonQuery(); 
    conn.Close();
    salutation.

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par labib23dz Voir le message
    essayes ça, et dis nous , si ça marche :
    Le schema de nommage des paramètres précédé de '@' ne me semble pas être celui de MySql.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  6. #6
    Membre habitué
    Inscrit en
    Novembre 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 262
    Points : 163
    Points
    163
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Le schema de nommage des paramètres précédé de '@' ne me semble pas être celui de MySql.
    en effet Bluedeep, personnellement , je travail souvent avec SQLServer, je pensait que ça pouvait marcher aussi avec le MySQL, non ?

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par labib23dz Voir le message
    en effet Bluedeep, personnellement , je travail souvent avec SQLServer, je pensait que ça pouvait marcher aussi avec le MySQL, non ?
    Non, ou putôt : je ne sais pas, mais si ça marche ce serait un hasard.

    Je ne travaille jamais avec MySql, mais nous avons déjà soulevé ce problème : l'absence de "NameFactory" pour les paramètres qui empêche malgré les facilités offertes par ADO.NET, d'écrire un code portable entre SGBD de ce fait (même si on se limite à du SQL normé, on est coincé par le nommage des paramètres).

    Exemple :

    "@NomDuParam" : pour Sql Server.
    ":NomDuParam" : pour Oracle.

    Pour les autres, (MySql, PostGreSql, Access, etc ...) et bien, je ne sais pas.

    Si tu cherches sur le forum, tu trouveras une duiscussion récente que j'ai eu avec TomLev sur le sujet, où on soulignait qu'il serait intéressant d'avoir une sorte de "ParameterNameFactory" dans ADO.Net capable, en donnant le nom "brut" d'un paramètre, de générer le nom adapté au type de SGBD connecté.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  8. #8
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Bonjour,
    Citation Envoyé par Bluedeep Voir le message
    Non, ou putôt : je ne sais pas, mais si ça marche ce serait un hasard.
    J'utilise très souvent la base de données MySQL et je peux vous assurer que nommage des paramètres précédé de '@' marche très bien chez moi (MySQL 5.5.16). Ci-après un fragment de code:
    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
     
    public abstract class SqlEtudiantConnect
     {
            private static MySqlConnection _myConn;
            public static string MessageErreurInsert;
     
            public static MySqlConnection GetConnection()
            {
                if (_myConn == null)
                {
                    SocleDBFactory mySocle = new SocleDBFactory();
                    _myConn = (MySqlConnection)mySocle.GetConnection();
     
                }
                return _myConn;
            }
     
     public static long AddEtudiant(string Matricule, string Nom, string Prenom, string Sexe, string DateNsse, string LieuNsse)
            {
                long retour = -1;
     
                try
                {
                    MySqlCommand myCommand = new MySqlCommand();
                    myCommand.CommandType = CommandType.Text;
     
                    string insertSQL = "INSERT INTO `etudiant` (`Matricule` ,`Nom` ,`Prenom` , `Sexe`, `DateNaissance` ,`LieuNaissance`) " +
                                       "VALUES ( " +
                                       "@Matricule, " +
                                       "@Nom , " +
                                       "@Prenom , " +
                                       "@Sexe , " +	
                                       "@DateNss , " +
                                       "@LieuNss  " +
                                       ") ";
     
                    myCommand.CommandText = insertSQL;
     
                    myCommand.Connection = GetConnection();
     
                    if (_myConn.State == ConnectionState.Closed)
                    {
                        _myConn.Open();
                    }
     
                    myCommand.Parameters.AddWithValue("@Matricule", Matricule);
                    myCommand.Parameters.AddWithValue("@Nom", Nom);
                    myCommand.Parameters.AddWithValue("@Prenom", Prenom);
                    myCommand.Parameters.AddWithValue("@Sexe", Sexe);
                    myCommand.Parameters.AddWithValue("@DateNss", DateNsse);
                    myCommand.Parameters.AddWithValue("@LieuNss", LieuNsse);
     
                    myCommand.ExecuteNonQuery();
     
    	        retour = myCommand.LastInsertedId;
     
                }
                catch (Exception msg)
                {
                    MessageErreurInsert = msg.Message;
                    retour = -2;
                }
                finally
                {
                    _myConn.Close(); 
                }
     
                return retour;
            }
     
    }
    J'utilise même le nommage avec '@' pour mes procédures stockées et c'est nickel.
    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
     
    public static int AddParent(string nom, string prenom, string emp, string profession, string adresse, string bp, string tel, string fax, string email)
    {
    	try
    	{
    		var cmd = new MySqlCommand
    	   {
    		   CommandType = CommandType.StoredProcedure,
    		   CommandText = "SP_INSERT_TUTEUR",
    		   Connection = GetConnection()
    	   };
     
    		// Gestion des paramètres de la procédure stockée
    		cmd.Parameters.AddWithValue("@paramNom", nom);
    		cmd.Parameters.AddWithValue("@paramPrenom", prenom);
    		cmd.Parameters.AddWithValue("@paramEmp", emp);
    		cmd.Parameters.AddWithValue("@paramProfession", profession);
    		cmd.Parameters.AddWithValue("@paramAdresse", adresse);
    		cmd.Parameters.AddWithValue("@paramBP", bp);
    		cmd.Parameters.AddWithValue("@paramTel", tel);
    		cmd.Parameters.AddWithValue("@paramFax", fax);
    		cmd.Parameters.AddWithValue("@paramEmail", email);
     
    		// Pour la valeur de retour
    		cmd.Parameters.Add(new MySqlParameter("@RETURN_VALUE", MySqlDbType.Int32, 4, ParameterDirection.ReturnValue,
    											  false, 4, 4, string.Empty, DataRowVersion.Current, null));
     
    		if (_myConn.State == ConnectionState.Closed)
    		{
    			_myConn.Open();
    		}
     
    		cmd.ExecuteNonQuery(); // Excécution de la procédure stockée 
     
    		int newid = (int)cmd.Parameters["@RETURN_VALUE"].Value;
     
    		return newid;
    	}
    	catch (Exception ex)
    	{
     
    		MessageErreurInsert = ex.Message;
    		return -1;
    	}
    	finally
    	{
    		_myConn.Close(); 
    	}
    }
    N'oubliez pas le tag et

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/07/2012, 05h54
  2. Réponses: 3
    Dernier message: 27/09/2011, 17h59
  3. Restaurer une base a partir des fichiers mysql
    Par mims1664 dans le forum MySQL
    Réponses: 4
    Dernier message: 23/09/2010, 14h11
  4. Réponses: 11
    Dernier message: 01/05/2007, 23h43
  5. Réponses: 13
    Dernier message: 25/01/2007, 17h20

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