J'ai modifié ainsi et au moment if (commande2.ExecuteNonQuery() == 0) j'ai une erreur qui me dit : "Un DbDataReader associé à cette commande est déjà ouvert. Il doit d'abord être fermé.", je suppose que je dois encore utiliser un using? Mais je vois pas où! Sinon il fonctionne pour le reste, il rentre bien dans le id.Read(); :
static public void CréerCompte(PerComplet p)
{
DbConnection connection = UsineCommande.Usine.Con;
DbCommand commande1 = UsineCommande.Usine.CreerComptePER;
DbCommand commande2 = UsineCommande.Usine.CreerCompteAPP;
DbCommand commande3 = UsineCommande.Usine.ChercherIdPER;
connection.Open();
try
{
commande1.Parameters["@per_nom"].Value = p.Nom;
commande1.Parameters["@per_prenom"].Value = p.Prenom;
commande1.Parameters["@per_mdp"].Value = p.MDP;
commande1.Parameters["@per_email"].Value = p.Mail;
commande1.Parameters["@per_organisateur"].Value = p.Organisateur;
if (commande1.ExecuteNonQuery() == 0)
throw new Exception("Erreur pendant l'insertion de la personne");
commande2.Parameters["@app_fk_gro"].Value = p.Idgroupe;
commande3.Parameters[0].Value = p.Nom;
commande3.Parameters[1].Value = p.Prenom;
commande3.Parameters[2].Value = p.Mail;
using (DbDataReader id = commande3.ExecuteReader())
{
id.Read();
commande2.Parameters["@app_fk_per"].Value = id["PER_ID"];
if (commande2.ExecuteNonQuery() == 0)
throw new Exception("Erreur au niveau de l'insertion d'appartenance.");
}
}
catch (Exception e)
{
throw UsineException.ObtenirException(e.Message);
}
finally
{
connection.Close();
}
}