cs_warzet
Messages postés99Date d'inscriptionjeudi 17 janvier 2008StatutMembreDernière intervention25 juillet 2013
-
4 janv. 2013 à 10:31
cs_warzet
Messages postés99Date d'inscriptionjeudi 17 janvier 2008StatutMembreDernière intervention25 juillet 2013
-
7 janv. 2013 à 09:58
Bonjour à tous, je voudrais soumettre à votre sagacité ces deux code de mise à jour et vous demander de m'en donner la différence, car il se trouve que premier ne marche et je ne comprends pas cela. Merci
#region MISE A JOUR EMPLOI DU TEMPS
private void MAJ_EDT()
{
try
{
// Connexion à la base de test
OleDbConnection Conx = new OleDbConnection(strConex);
Conx.Open();
//Préparation des paramètres
OleDbParameter Param_CodeClas = new OleDbParameter("@CodeClass", OleDbType.Integer);//0
OleDbParameter Param_CodeEns = new OleDbParameter("@CodeEns", OleDbType.VarWChar,50);//1
OleDbParameter Param_CodMat = new OleDbParameter("@CodeMat", OleDbType.Integer);//2
OleDbParameter Param_CodeAn = new OleDbParameter("@CodeAn", OleDbType.Integer);//3
OleDbParameter Param_IdEns = new OleDbParameter("@IdEns", OleDbType.Integer);//4
Param_CodeClas.Value = this.txtCodeClasse.Text;//0
Param_CodeEns.Value = this.txtCodeEnseignant.Text;//1
Param_CodMat.Value = this.txtCodeMatiere.Text;//3
Param_CodeAn.Value = this.txtCodeAnneeScolaire.Text;//5
Param_IdEns.Value = this.txtIdEnseigner.Text;//2
OleDbCommand Comd = new OleDbCommand("UPDATE [EmploiDuTemps] SET code_classe=@CodeClass, code_enseignant=@CodeEns," + "\n" +
"code_matiere=@CodeMat, code_annee=@CodeAn" + "\n" +
"WHERE id_enseigner=@IdEns",Conx);
Comd.Parameters.Add(Param_CodeClas);//0
Comd.Parameters.Add(Param_CodeEns);//1
Comd.Parameters.Add(Param_CodMat);//2
Comd.Parameters.Add(Param_CodeAn);//3
Comd.ExecuteNonQuery();
Conx.Close();
}
catch (FileNotFoundException ex) //(Exception ex)
{
MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void MAJ_EmploiDuTemps()
{
try
{
OleDbCommand Comd = new OleDbCommand("UPDATE [EmploiDuTemps] SET code_classe=?, code_enseignant=?," + "\n" +
"code_matiere=?, code_annee=? WHERE id_enseigner = " + this.txtIdEnseigner.Text);
Comd.Parameters.Add(new OleDbParameter("code_classe", System.Data.OleDb.OleDbType.Integer,7,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, this.txtCodeClasse.Text));
Comd.Parameters.Add(new OleDbParameter("code_enseignant", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, this.txtCodeEnseignant.Text));
Comd.Parameters.Add(new OleDbParameter("code_matiere", System.Data.OleDb.OleDbType.Integer,7,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, this.txtCodeMatiere.Text));
Comd.Parameters.Add(new OleDbParameter("code_annee", System.Data.OleDb.OleDbType.Integer,7,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtCodeAnneeScolaire.Text));
//Declaration de ma connexion
OleDbConnection Conex = new OleDbConnection(strConex);
//Initialisation de la connexion
Comd.Connection = Conex;
//Ouverture de la connexion
Conex.Open();
//Execution de la commande
Comd.ExecuteNonQuery();
//Fermeture de la connexion
Comd.Connection.Close();
}
catch (FileNotFoundException ex) //(Exception ex)
{
MessageBox.Show(ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion
A voir également:
Requête paramétrée de mise à jour comparaison de lignes de codes
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 4 janv. 2013 à 17:51
Re,
en ce qui concerne la structure de ton code,
je n'irais pas aussi loin que okosa, mais quelquess remarques :
Les nom de méthode ne doivent pas être en majuscule ni commencer par une majuscule
maMethodeQuiFaitUneAction()
Il faut prévoir les exceptions, et en mettant le Close() de la connexion tel qu'il est, il se peut qu'il ne soit jamais exécuté,
faire plutôt un truc du genre :
Les retours chariots dans la requete ne servent à rien : + "\n"
Utiliser un simple String.Format ou un StringBuilder est souvent plus efficace si beaucoup de concaténations (car à chaque concaténation, le framework alloue une nouvelle chaine de taille arbitrairement trop grande) :
string requete = String.Format(
"UPDATE [EmploiDuTemps] SET code_classe=?, code_enseignant=?, code_matiere=?, code_annee=? WHERE id_enseigner = {0}", this.txtIdEnseigner.Text);
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 4 janv. 2013 à 13:48
Salut,
Voici ce que dit MSDN :
Le fournisseur OLE DB .NET ne prend pas en charge les paramètres nommés pour passer des paramètres à une instruction SQL ou à une procédure stockée appelée par un OleDbCommand si CommandType a la valeur Text. Dans ce cas, l'espace réservé représenté par le point d'interrogation (?) doit être utilisé.