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