| 12
 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
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 
 | public partial class Etudiant11 : System.Web.UI.Page  
  {  
 
 
      protected void Page_Load(object sender, EventArgs e)  
       {  
 
       }  
        public class Etudiant  
       {  
          public int NumInscription { get; set; }  
           public string Nom { get; set; }  
          public string Prenom { get; set; }  
           public string CodeSexe { get; set; }  
       }  
 
      protected void Button1_Click(object sender, EventArgs e)  
       {  
          XmlSerializer serializer = new XmlSerializer(typeof(List<Etudiant>));  
          List<Etudiant> etudiants = new List<Etudiant>();  
 
          FileInfo fi = new FileInfo(@"C:\Temp\Etudiants.xml");  
 
           // Creation d'un étudiant. Peu être créé à partir d'une requête SQL   
           SqlConnection cnx = (SqlConnection)Application[@"Data Source=.\SQLEXPRESS;UID=sa;Password=****;Initial Catalog=scolarite"];  
           cnx.Open();  
          string query = "(@"DECLARE @MATIERE nvarchar(max)
SELECT @MATIERE =
  STUFF(
  (
  select distinct ',[' + LIBELLE_MATIERE + ']'
  from MATIERE where CODE_MODULE =11
  for xml path('')
 ),
 1,1,'')
 
DECLARE @SQL nvarchar(max)
SELECT @SQL = N'
select
 *
from (
 
  SELECT     ETUDIANT.NUM_INSCRIPTION, ETUDIANT.NOM_PRENOM_ETUDIANT_ARABE,EXAMEN.CODE, 
 EXAMEN.NOTE, 
                     MATIERE.LIBELLE_MATIERE
FROM         ETUDIANT INNER JOIN
                      EXAMEN ON ETUDIANT.NUM_INSCRIPTION = EXAMEN.NUM_INSCRIPTION INNER JOIN
                      CAPITALISE_MODULE ON 
                      ETUDIANT.NUM_INSCRIPTION = CAPITALISE_MODULE.NUM_INSCRIPTION INNER JOIN
                      MATIERE ON EXAMEN.CODE_MATIERE = MATIERE.CODE_MATIERE INNER JOIN
                      MODULE ON CAPITALISE_MODULE.CODE_MODULE = MODULE.CODE_MODULE 
                      AND MATIERE.CODE_MODULE = MODULE.CODE_MODULE
WHERE      (CAPITALISE_MODULE.CODE_MODULE = 11) AND 
                      (CAPITALISE_MODULE.CODE_TYPE_RELATION_MODULE = 1)
) Data
PIVOT (
 SUM(NOTE)
 FOR LIBELLE_MATIERE
 IN (
  ' + @MATIERE + '
 )
) PivotTable
'
 
exec sp_executesql @SQL
";  
        SqlCommand cmd = new SqlCommand(query, cnx);  
      SqlDataReader readere = cmd.ExecuteReader();  
 
           readere.Read();  
 
         Etudiant etudiant = new Etudiant() { NumInscription = Convert.ToInt32(readere["NUM_INSCRIPTION"].ToString()), Nom = readere["NOM_PRENOM_ETUDIANT"].ToString(),  CodeSexe = readere["CODE_SEXE"].ToString() };
         etudiants.Add(etudiant);
 
         readere.Close();  
         // Ajout de l'étudiant à la liste   
 
 
          // Création du fichier XML correspondant à la liste d'etudiants   
          using (MemoryStream mem = new MemoryStream())  
           {  
              serializer.Serialize(mem, etudiants);  
 
              using (FileStream fs = new FileStream(fi.FullName, FileMode.Create))  
            {  
                using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8))  
                  {  
                       sw.Write(Encoding.UTF8.GetString(mem.ToArray()));  
                  }  
               }  
         }  
 
          // Destruction des objets   
          etudiant = null;  
           etudiants = null;  
 
          // Lecture du fichier XML généré.   
          // Recréation de la liste d'étudiant   
         using (FileStream stream = fi.OpenRead())  
          {  
              XmlReader reader = XmlReader.Create(stream);  
              string str = reader.ReadInnerXml();  
 
             if (serializer.CanDeserialize(reader))  
              {  
                  etudiants = (List<Etudiant>)serializer.Deserialize(reader);  
             }  
        }  
 
         // Pour chaque étudiant de la liste on reconstitue des requêtes SQL de mise à jour.   
        foreach (Etudiant ee in etudiants)  
         {  
           Response .Write  (string.Format("UPDATE ETUDIANT SET ETUDIANT_NOM = '{0}', ETUDIANT_PRENOM = '{1}', CODE SEXE = '{2}' WHERE NUM_INSCRIPTION = {3}", ee.Nom, ee.Prenom, ee.CodeSexe, ee.NumInscription));  
          }  
 
 
     } | 
Partager