cs_warzet
Messages postés99Date d'inscriptionjeudi 17 janvier 2008StatutMembreDernière intervention25 juillet 2013
-
13 août 2012 à 08:59
cs_warzet
Messages postés99Date d'inscriptionjeudi 17 janvier 2008StatutMembreDernière intervention25 juillet 2013
-
13 août 2012 à 10:22
Bonjour,
Dans mon application, je souhaiterai lors de l'enregistrement des diplômes scolaires vérifier que le diplôme n'est réenregistré. Aussi voici ce que j'ai fais:
Cnx.Open();
System.Data.OleDb.OleDbDataReader DtR;
System.Data.OleDb.OleDbCommand Comde = new System.Data.OleDb.OleDbCommand("SELECT * FROM [Diplomer] where code_eleve='" + this.txtCodeEleve.Text + "' And num_diplome='" + this.txtNumDiplome.Text + "';", Cnx);
DtR = Comde.ExecuteReader();
if (DtR.Read() != true)
{
Mon Code d'Enregistrement
}
else
{
MessageBox.Show("Le Diplôme de cet \nElève est déjà enregistré", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
DtR.Close();
Cela me renvoie l'erreur suivante
Type de donné non compatible dans le critère
Par ailleurs je signale que les champs
code_eleve
num_diplome
sont de type numérique et sont des clés étrangères.
Merci pour votre aide.
Tupad
Messages postés239Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention27 août 20125 13 août 2012 à 10:08
Tu considères que les champs code_eleve et num_diplome sont des strings au lieu de numériques
Par contre, ton code est peu résistant aux erreurs et a quelques failles de sécurités (comme les injections SQL)
Un exemple plus résistant et plus sécurisé avec ton code retravaillé:
try
{
Cnx.Open();
System.Data.OleDb.OleDbDataReader DtR;
String query = "SELECT * FROM [Diplomer] where code_eleve=@p1 And num_diplome=@p2;";
System.Data.OleDb.OleDbCommand Comde = new System.Data.OleDb.OleDbCommand(query, Cnx);
Comde.Paramaters.Add("p1", int.Parse(this.txtCodeEleve.Text));
Comde.Paramaters.Add("p2", int.Parse(this.txtNumDiplome.Text));
DtR = Comde.ExecuteReader();
if (DtR.Read() != true)
{
// tu sauves tes données
}
else
MessageBox.Show("Le Diplôme de cet \nElève est déjà enregistré", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
catch(OleDbException oleExc)
{
// logger l'erreur et afficher une erreur d'enregistrement à l'utilisateur
}
finally
{
// fermer la connexion
}