Bonjour tout le monde, j'ai un souci concernant l'appel d'une procédure stockée. Dans mon code, je fais le parsing d'un fichier xml et selon le nombre de noeuds existant dans le xml, je fais l'appel de la proc stockée.
Voila mon code:
D'aprés le code, je dois exécuter autant de fois la proc stockée que le nombre nodeList. Et comme la procédure stockée fais une insertion d'une ligne dans la base de données, je dois trouver 3 lignes insérées si le nodeList=3.
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 Campaign CampaignInstance = new Campaign(); // parsing xml XmlNodeList nodeList = DocList(xmlString); int i = 0; //boucle while selon le nombre nodeList while (i< nodeList.Count) { dt = DateTime.Now; ContactID = string.Format("{0:u}", dt); CampaignInstance.IdContact+= nodeList[i].Attributes["id"].Value; CampaignInstance.Tel1+=nodeList[i].SelectNodes("Tel1").Item(0).InnerText; CampaignInstance.Tel2+=nodeList[i].SelectNodes("Tel2").Item(0).InnerText; CampaignInstance.Tel3+=nodeList[i].SelectNodes("Tel3").Item(0).InnerText; objSqlParam2.ParameterName = "@PhoneNumber1"; objSqlParam2.Value = CampaignInstance.Tel1; alParam.Add(objSqlParam2); objSqlParam3.ParameterName = "@PhoneNumber2"; objSqlParam3.Value = CampaignInstance.Tel2; alParam.Add(objSqlParam3); objSqlParam4.ParameterName = "@PhoneNumber3"; objSqlParam4.Value = CampaignInstance.Tel3; alParam.Add(objSqlParam4); try { //Appel de la proc stockée DataAccesInstance.RunProcc("", "sp_CAMPSDK_AddContact", alParam); alParam = new ArrayList(); CampaignInstance = new Campaign(); i++ } catch (Exception) { throw; } }
Mais ce qui est bizarre c'est que je trouve une seule ligne dans la base concernant le premier noeud quelque soit le nodeList. Sachant que quand j'exécute le code avec des temps d'arrêt j'obtiens autant de lignes que le nodeList. J'ai même ajouté un sleep dans la boucle while et la aussi j'obtiens le nombre d'insertion correcte. Mais comme le nombre nodeList peut être trés grand, donc le sleep n'est pas une vrai solution.
Donc s'il vous plaît, dites moi comment je force l'attente de l'exécution de la procédure stockée et l'exécuter autant qu'il le faut dans la boucle.
Merci d'avance
Partager