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 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