1 pièce(s) jointe(s)
Souci insertion dans une table contenant 2 clés étrangères MySql/C#
Bonjour à tous,
Dans le cadre de ma période en entreprise, je rencontre une difficulté que je n'arriva pas à lever.
Je m'explique : Pour un développement concernant la gestion de Licenciés dans un club, j'ai les tables suivantes :LICENCIE, ADRESSE, TYPE ADRESSE (ex: Père,Mère,Parents,....) et une table HABITE constitué de ID_ADRESSE et NUMERO_LICENCE.
qui sont les clés primaires des tables ADRESSE et LICENCIE
Il est admis qu'un licencié puissent avoir 2 adresses (cas de séparation des parents,..), donc quand je créé une adresse pour un licencié, j’insère cette adresse dans la table ADRESSE et je récupéré l'ID_ADRESSE créé, ensuite j'insère cet ID_ADRESSE + NUMERO_LICENCE dans la table HABITE.
OR dans le cas de 2 adresses pour le même licencié, il faut donc implémenter la table HABITE avec un second couple ID_ADRESSE et NUMERO_LICENCE, or quand je le fais à la main via le mysql WOrkBench, ça fonctionne.
J'ai donc créé une procédure stockée pour cela :
Code:
1 2 3 4
| CREATE DEFINER=`root`@`localhost` PROCEDURE `ps_Add_Licence_Habite_Adresse`(IN idAdresse int(2), IN numeroLicence CHAR(14))
BEGIN
insert INTO habite (ID_ADRESSE,NUMERO_LICENCE) VALUES (idAdresse, numeroLicence);
END |
quand je l'appelle sous My sql workbench avec les paramètres, cela fonctionne aussi.
Par coontre, quand je souhaite utiliser cette procédure dans mon code C# :
Code:
1 2 3 4 5 6 7 8 9
| public void Ajouter_Licence_Habite_Adresse(int IdAdresse, string numeroLicence)
{
sqlCde.CommandText = "ps_Add_Licence_Habite_Adresse";
sqlCde.CommandType = CommandType.StoredProcedure;
sqlCde.Parameters.AddWithValue("@idAdresse", IdAdresse);
sqlCde.Parameters["@idAdresse"].Direction = ParameterDirection.Input;
sqlCde.Parameters.AddWithValue("@numeroLicence", numeroLicence);
sqlCde.Parameters["@numeroLicence"].Direction = ParameterDirection.Input;
sqlCde.ExecuteNonQuery(); |
, cela ne fonctionne plus et j'ai un message d'erreur :
Pièce jointe 180731
Je ne comprends pas pourquoi, cela ne pose pas de souci quand j'insère lesdits champs à la main ou via en appelant la procédure stockée. Je n'ai pas trouvé la solution pour réussir cette insertion depuis mon code C#.
Si vous avez des suggestions, je suis preneur.
Merci d'avance,
Cordialement,
Mac Chouffe