Requete parametrée Update

Signaler
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010
-
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010
-
Bonjour à tous, j'ai encore besoin d'aide svp.
Voici 2 requetes paramétrées, la première fonctionne très bien et pas la deuxième. Pourtant ce sont les mêmes.... Merci pour vos suggestions .

// Update

if(eleve){
// Création de la commandeSqlCommand cmdUpEl new SqlCommand("update ELEVE set ELV_NUM @ELV_NUM , CLS_CI = @CLS_CI , ELV_NOM = @ELV_NOM , ELV_PRN = @ELV_PRN , ELV_GENRE = @ELV_GENRE , ELV_DNAIS = @ELV_DNAIS , ELV_DENTR = @ELV_DENTR where ELV_NUM = ' " + lstNom.SelectedValue + " ' ",sqlConnection1);

// Ajout des paramètrescmdUpEl.Parameters.Add("@ELV_NUM",SqlDbType.SmallInt);

cmdUpEl.Parameters.Add("@CLS_CI",SqlDbType.VarChar);

cmdUpEl.Parameters.Add("@ELV_NOM",SqlDbType.VarChar);

cmdUpEl.Parameters.Add("@ELV_PRN",SqlDbType.VarChar);

cmdUpEl.Parameters.Add("@ELV_GENRE",SqlDbType.VarChar);

cmdUpEl.Parameters.Add("@ELV_DNAIS",SqlDbType.DateTime);

cmdUpEl.Parameters.Add("@ELV_DENTR",SqlDbType.DateTime);

cmdUpEl.Parameters["@ELV_NUM"].Value = textBoxModifId.Text;

cmdUpEl.Parameters["@CLS_CI"].Value = textBoxModifClasse.Text;

cmdUpEl.Parameters["@ELV_NOM"].Value = textBoxModifNom.Text;

cmdUpEl.Parameters["@ELV_PRN"].Value = textBoxModifPrenom.Text;

cmdUpEl.Parameters["@ELV_GENRE"].Value = textBoxModifGenre.Text;

cmdUpEl.Parameters["@ELV_DNAIS"].Value = textBoxModifDateNais.Text;

cmdUpEl.Parameters["@ELV_DENTR"].Value = textBoxModifDateEntr.Text;

// Création du DataAdaptater et du DataSetSqlDataAdapter dacmdUpEl;

DataSet dscmdUpEl;
dacmdUpEl new SqlDataAdapter(cmdUpEl);dscmdUpEl

new DataSet();

// Traitement

try{

// Ouverture de la connexionsqlConnection1.Open();

// Execution de la commandecmdUpEl.ExecuteNonQuery();

// Fermeture de la connexionsqlConnection1.Close();

}

catch(Exception ex){

MessageBox.Show(ex.Message);

}

//Actualisation de la liste lstNomdsEleve1.Clear();

sqldaEleve.Fill(dsEleve1);

lstNom.DataSource = dsEleve1.ELEVE;

lstNom.DisplayMember = "ELV_NOM";

lstNom.ValueMember = "ELV_NUM";

}

if(professeur){
// Création de la commandeSqlCommand cmdUpProf new SqlCommand("update PROFESSEUR set PRF_CI @PRF_CI , PRF_NOM = @PRF_NOM , PRF_PRN = @PRF_PRN , PRF_GENRE = @PRF_GENRE , PRF_DEMB = @PRF_DEMB , PRF_DNAIS = @PRF_DNAIS where PRF_CI = ' " + lstNom.SelectedValue + " ' ",sqlConnection1);

// Ajout des paramètrescmdUpProf.Parameters.Add("@PRF_CI",SqlDbType.VarChar);

cmdUpProf.Parameters.Add("@PRF_NOM",SqlDbType.VarChar);

cmdUpProf.Parameters.Add("@PRF_PRN",SqlDbType.VarChar);

cmdUpProf.Parameters.Add("@PRF_GENRE",SqlDbType.VarChar);

cmdUpProf.Parameters.Add("@PRF_DEMB",SqlDbType.DateTime);

cmdUpProf.Parameters.Add("@PRF_DNAIS",SqlDbType.DateTime);

cmdUpProf.Parameters["@PRF_CI"].Value = textBoxModifId.Text;

cmdUpProf.Parameters["@PRF_NOM"].Value = textBoxModifNom.Text;

cmdUpProf.Parameters["@PRF_PRN"].Value = textBoxModifPrenom.Text;

cmdUpProf.Parameters["@PRF_GENRE"].Value = textBoxModifGenre.Text;

cmdUpProf.Parameters["@PRF_DEMB"].Value = textBoxModifDateEntr.Text;

cmdUpProf.Parameters["@PRF_DNAIS"].Value = textBoxModifDateNais.Text;

// Création du DataAdaptater et du DataSetSqlDataAdapter dacmdUpProf;

DataSet dscmdUpProf;
dacmdUpProf new SqlDataAdapter(cmdUpProf);dscmdUpProf

new DataSet();

// Traitement

try{

// Ouverture de la connexionsqlConnection1.Open();

// Execution de la commandecmdUpProf.ExecuteNonQuery();

// Fermeture de la connexionsqlConnection1.Close();

}

catch(Exception ex){

MessageBox.Show(ex.Message);

}

//Actualisation de la liste lstNomdsProfesseur1.Clear();

sqldaProfesseur.Fill(dsProfesseur1);

lstNom.DataSource = dsProfesseur1.PROFESSEUR;

lstNom.DisplayMember = "PRF_NOM";

lstNom.ValueMember = "PRF_CI";

}

7 réponses

Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
63
Hello,

Tu dis que la 2ème ne fonctionne pas, as-tu une erreur, ou est-ce qu'elle ne mais rien à jour dans la DB, mais sans faire d'exception ?

Ensuite, encore une petite remarque. Tu peux encore améliorer l'utilisation des requêtes paramétrées en y mettant aussi la clause where.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

Merci .

La 2e requete ne fait rien du tout , si j'ajoute un "e" a un nom, en cliquant sur mon bouton update, cela enleve le "e". Et aucun message d'erreur.

Etant bloqué, je vais etudier la clause where pour les requetes parametrées, merci pour le conseil.
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
63
Re,

Ca n'a peut-être aucun rapport, mais tu n'es pas obligé de faire un DataAdapter et un DAtaSet pour un update

using (sqlConnection1){
   sqlConnection1.Open();
   cmdUpProf.Connection = sqlConnection1;
   cmd.ExecuteNonQuery();
}

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

re,

en effet ce n'est pas obligatoire.

j'ai tenté :

dacmdUpProf.Update(dscmdUpProf);

dscmdUpProf.AcceptChanges();

mais toujours pareil.

Merci
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
63
Oui, mais as-tu tenté les cinq lignes que je t'ai donné ?
(En corrigeant la petite erreur cmdUpProf.ExecuteNonQuery();)

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

oui, j'ai tenté, j'ai un problème d'initialisation de connectionstring
Messages postés
44
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
24 janvier 2010

Problème Resolu, j'ai changé de méthode.
Mon problème d'affichage est resolu par : lstNom.SelectedValue = 0; puis par un raffraichissement du dataset.
 
Dernière question qui est plutot du SQL : Peut on modifier une clé primaire ? du genre : si j'ai une prof qui se marie , donc change de nom, son identifiant qui est "AR" devient "AD"

SharpMao, merci pour ton aide.

voici le code :

// Update

if(eleve){

// Traitement

try{

// Ouverture de la connexionsqlConnection1.Open();

// Execution de la commandelstNom.SelectedValue = 0;

sqldaEleve.Update(dsEleve1);

// Fermeture de la connexionsqlConnection1.Close();

}

catch(Exception ex){

MessageBox.Show(ex.Message);

}

//Actualisation de la liste lstNomdsEleve1.Clear();

sqldaEleve.Fill(dsEleve1);

lstNom.DataSource = dsEleve1.ELEVE;

lstNom.DisplayMember = "ELV_NOM";

lstNom.ValueMember = "ELV_NUM";

}

if(professeur){

// Traitement

try{

// Ouverture de la connexionsqlConnection1.Open();

// Execution de la commandelstNom.SelectedValue= 0;

sqldaProfesseur.Update(dsProfesseur1);

// Fermeture de la connexionsqlConnection1.Close();

}

catch(Exception ex){

MessageBox.Show(ex.Message);

}

//Actualisation de la liste lstNomdsProfesseur1.Clear();

sqldaProfesseur.Fill(dsProfesseur1);

lstNom.DataSource = dsProfesseur1.PROFESSEUR;

lstNom.DisplayMember = "PRF_NOM";

lstNom.ValueMember = "PRF_CI";

}