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

ADO.NET Discussion :

Parameter '' must be defined


Sujet :

ADO.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Points : 37
    Points
    37
    Par défaut Parameter '' must be defined
    Bonjour,
    j'essaye d'updater un dataset et de le transmettre en suite dans un base de données mysql. Mas je reçois un message d'erreur me disant

    "Parameter '@nomClient' must be defined."
    Je cherche et recherche depuis deux jours et je dois reconnaitre que je désespère.

    voici mon 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
     
     
     MySQLCmd = "select * from clients  ;";
     
     
      this.MyAdapter.SelectCommand = new MySqlCommand(MySQLCmd, this.Connection);
     
                this.Connection.ConnectionString = this.ConnectionStr;
                this.OpenConnect();
                MyAdapter.SelectCommand = this.Connection.CreateCommand();
                MyAdapter.SelectCommand.CommandText = MySQLCmd;// MyAdapter.Fill(TheTable);
                MyAdapter.Fill(TheTable, "clients");
     
               // modifier le dataset
                string les = TheTable.Tables["clients"].Rows[0]["idClient"].ToString();
                MessageBox.Show(les);
     
                TheTable.Tables["clients"].Rows[0]["nomClient"] = "mae";
     
               //effectuer l'update
                string Upcmd = "UPDATE  clients SET nomClient = @nomClient WHERE id_client = @idClient";
     
     
                this.MyAdapter.UpdateCommand = new MySqlCommand(Upcmd, this.Connection);
                this.MyAdapter.UpdateCommand.CommandText = Upcmd;
     
     
    		   // préparation des parametres
    		   DbParameter paranomidClient = this.MyAdapter.UpdateCommand.CreateParameter();
               paranomidClient.Value = TheTable.Tables["clients"].Rows[0]["idClient"];
               paranomidClient.SourceColumn = "idClient";
               paranomidClient.ParameterName = "idClient";
               this.MyAdapter.UpdateCommand.Parameters.Add(paranomidClient);
     
     
     
                DbParameter paranomclient = this.MyAdapter.UpdateCommand.CreateParameter();
                paranomclient.SourceColumn = "nomClient";
                paranomclient.Value = "fm";
                paranomclient.ParameterName = "nomClient";
                this.MyAdapter.UpdateCommand.Parameters.Add(paranomclient);
     
    //lancement de l'update
     this.MyAdapter.UpdateCommand = new MySqlCommand(Upcmd, this.Connection);
                int n = this.MyAdapter.Update(TheTable.Tables["clients"]);
    et voici le message d'erreur en détail:

    L'exception MySql.Data.MySqlClient.MySqlException n'a pas été gérée
    Message="Fatal error encountered during command execution."
    Source="System.Data"
    ErrorCode=-2147467259
    Number=0
    StackTrace:
    à System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
    à System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
    à System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
    à System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
    à System.Data.Common.DbDataAdapter.Update(DataTable dataTable)
    à DataLayer.CustomerClient.InsertClient(Client leclient) dans C:\Users\frederic\Desktop\cle\MailTo1.0\DataLayer\CustomerClient.cs:ligne 224
    à BusinnessLayer.BuClientManager.InsertClient(Client UnClient) dans C:\Users\frederic\Desktop\cle\MailTo1.0\Businness\BuClientManager.cs:ligne 75
    à MailTo1._0.ClientManagerForm.EnregistreClientButton_Click(Object sender, EventArgs e) dans C:\Users\frederic\Desktop\cle\MailTo1.0\MailTo1.0\ClientManagerForm.cs:ligne 76
    à System.Windows.Forms.Control.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    à System.Windows.Forms.Control.WndProc(Message& m)
    à System.Windows.Forms.ButtonBase.WndProc(Message& m)
    à System.Windows.Forms.Button.WndProc(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.Run(Form mainForm)
    à MailTo1._0.Program.Main() dans C:\Users\frederic\Desktop\cle\MailTo1.0\MailTo1.0\Program.cs:ligne 18
    à System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
    à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    à System.Threading.ThreadHelper.ThreadStart()
    InnerException: MySql.Data.MySqlClient.MySqlException
    Message="Parameter '@nomClient' must be defined."
    Source="MySql.Data"
    ErrorCode=-2147467259
    Number=0
    StackTrace:
    à MySql.Data.MySqlClient.Statement.SerializeParameter(MySqlParameterCollection parameters, MySqlPacket packet, String parmName)
    à MySql.Data.MySqlClient.Statement.InternalBindParameters(String sql, MySqlParameterCollection parameters, MySqlPacket packet)
    à MySql.Data.MySqlClient.Statement.BindParameters()
    à MySql.Data.MySqlClient.Statement.Execute()
    à MySql.Data.MySqlClient.PreparableStatement.Execute()
    à MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
    InnerException:
    Merci beaucoup

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 075
    Points
    28 075
    Par défaut
    paranomidClient.ParameterName = "@idClient";
    ......
    paranomclient.ParameterName = "@nomClient";
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    Merci pour ton aide sevyc64,

    mais j'ai toujours le même message d'erreur

    Parameter '@nomClient' must be defined.

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 075
    Points
    28 075
    Par défaut
    tu es sur que l'erreur se produit bien sur cette portion de code ?

    Ton message d'erreur parle plutôt d'une méthode "InsertClient"
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Points : 37
    Points
    37
    Par défaut
    oui,
    le code que j'ai affiché est la fonction insertclient.

    le débugeur s'arrêt bien dans cette fonction et bloque sur la derniere ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                this.MyAdapter.UpdateCommand = new MySqlCommand(Upcmd, this.Connection);
                int n = this.MyAdapter.Update(TheTable.Tables["clients"]);

  6. #6
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 192
    Points : 28 075
    Points
    28 075
    Par défaut
    oups, j'étais pas aller jusqu'au bout de ton code.

    Supprime l'avant dernière ligne ou tu redéfini un nouvel objet commande, il ne faut pas, tu l'a déjà défini avant de créer tes paramètre, c'est celui-là qu'il faut utiliser puisque tu lui as associé les paramètres.

    Avec l'avant dernière ligne, tu redéfini un nouvel objet commande qui lui n'a pas de paramètres, d'où l'erreur
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 54
    Points : 37
    Points
    37
    Par défaut


    Merci C'est génial ça fonction.

    UN tout grand merci,
    un énorme merci,

    j'ai tellement bloqué sur ces erreurs.

    Donc je retien le @ a mettre lorsque je nome mon parametre
    et ne pas créer une deuxieme foisl'updatecommand

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

Discussions similaires

  1. Invalid parameter number: parameter was not defined
    Par bizebi dans le forum Langage
    Réponses: 3
    Dernier message: 24/11/2013, 19h47
  2. [PDO] Invalid parameter number: parameter was not defined
    Par Xeuch dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/03/2013, 18h06
  3. Réponses: 6
    Dernier message: 03/06/2010, 10h09
  4. [function.fread]: Length parameter must be > 0
    Par anxious dans le forum Langage
    Réponses: 8
    Dernier message: 06/01/2010, 21h40
  5. Réponses: 17
    Dernier message: 28/07/2005, 08h20

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