Ado.net gestion des relations d’une base de données - téléc

ADO.NET Gestion des relations Visual C# - SQL Server 2000 L. Hassouni 1 ADO.NET GESTION DES RELATIONS D’une base de données SQL Server(JDNotation) Objectif du TP : Réaliser un projet qui permet d’exploiter les relations qui existent entre les tables d’une base de données SQL Server à l’aide des objets DataSet et DataRelation. Le schéma de la base est fourni ci-dessous : ADO.NET Gestion des relations Visual C# - SQL Server 2000 L. Hassouni 2 Correction

private void EffacerListes(){ LsbCodeMatière.Items.Clear();

LsbLibelleMatiere.Items.Clear();

LsbCoefficient.Items.Clear();

LsbNumEpreuve.Items.Clear();

LsbDate.Items.Clear();

LsbLieu.Items.Clear();

LsbNumEtudiant.Items.Clear();

LsbNomPrenom.Items.Clear();

LsbNote.Items.Clear();} private void MatieresDuModule(DataRow ModRow, DataRelation MyRel){ foreach (DataRow MatRow in ModRow.GetChildRows(MyRel)){ LsbCodeMatière.Items.Add(MatRow["CodeMatière"].ToString());

LsbLibelleMatiere.Items.Add(MatRow["LibelléMatière"].ToString());

LsbCoefficient.Items.Add(MatRow["Coefficient"].ToString());} }

private void EpreuvesEnMatieres(DataRow MatRow, DataRelation MyRel){ LsbNumEpreuve.Items.Clear();

LsbDate.Items.Clear();

LsbLieu.Items.Clear();

LsbNumEtudiant.Items.Clear();

LsbNomPrenom.Items.Clear();

LsbNote.Items.Clear();

foreach (DataRow EprRow in MatRow.GetChildRows(MyRel)){ LsbNumEpreuve.Items.Add(EprRow["NumEpreuve"].ToString());

LsbDate.Items.Add(EprRow["DateEpreuve"].ToString());

LsbLieu.Items.Add(EprRow["Lieu"].ToString());} }

private void NotesEnEpreuve(DataRow EprRow, DataRelation MyRelEnf, DataRelation MyRelPar){ LsbNumEtudiant.Items.Clear();

LsbNomPrenom.Items.Clear();

LsbNote.Items.Clear();

foreach (DataRow NotRow in EprRow.GetChildRows(MyRelEnf)){ LsbNumEtudiant.Items.Add(NotRow["NumEtudiant"].ToString());

LsbNomPrenom.Items.Add(NotRow.GetParentRow(MyRelPar)["Nom"].ToString()+ " " + NotRow.GetParentRow(MyRelPar)["Prénom"].ToString());

LsbNote.Items.Add(NotRow["Note"].ToString());} } ADO.NET Gestion des relations Visual C# - SQL Server 2000 L. Hassouni 3

private void BtnConnexion_Click(object sender, System.EventArgs e){ MyStrConn = "Server = localhost; Integrated Security = SSPI; Initial Catalog = SQLJDNotation";

MyConn = new SqlConnection(MyStrConn);

MyStrModules = "SELECT * FROM Modules";

MyStrMatières = "SELECT * FROM Matières";

MyStrEpreuves = "SELECT * FROM Epreuves";

MyStrNotes = "SELECT * FROM Notes";

MyStrEtudiants = "SELECT * FROM Etudiants";

MyCmdModules = new SqlCommand(MyStrModules, MyConn);

MyCmdMatieres = new SqlCommand(MyStrMatières, MyConn);

MyCmdEpreuves = new SqlCommand(MyStrEpreuves, MyConn);

MyCmdNotes = new SqlCommand(MyStrNotes, MyConn);

MyCmdEtudiants = new SqlCommand(MyStrEtudiants, MyConn);

MyAdapModules = new SqlDataAdapter();

MyAdapModules.SelectCommand = MyCmdModules;

MyAdapMatieres = new SqlDataAdapter(MyCmdMatieres);

MyAdapEpreuves = new SqlDataAdapter(MyCmdEpreuves);

MyAdapNotes = new SqlDataAdapter(MyCmdNotes);

MyAdapEtudiants = new SqlDataAdapter(MyCmdEtudiants);

MyDataSet = new DataSet();

MyAdapModules.Fill(MyDataSet, "Modules");

MyAdapMatieres.Fill(MyDataSet, "Matières");

MyAdapEpreuves.Fill(MyDataSet, "Epreuves");

MyAdapNotes.Fill(MyDataSet, "Notes");

MyAdapEtudiants.Fill(MyDataSet, "Etudiants");

// Définitions des contraintes clés primaires

MyDataSet.Tables["Modules"].PrimaryKey = new DataColumn[]{MyDataSet.Tables["Modules"].Columns["CodeModule"]};

MyDataSet.Tables["Matières"].PrimaryKey = new DataColumn[]{MyDataSet.Tables["Matières"].Columns["CodeMatière"]};

MyDataSet.Tables["Epreuves"].PrimaryKey = new DataColumn[]{MyDataSet.Tables["Epreuves"].Columns["NumEpreuve"]};

MyDataSet.Tables["Etudiants"].PrimaryKey = new DataColumn[]{MyDataSet.Tables["Etudiants"].Columns["NumEtudiant"]};

MyDataSet.Tables["Notes"].PrimaryKey = new DataColumn[]{MyDataSet.Tables["Notes"].Columns["NumEpreuve"],MyDataSet.Tables["Notes"].Columns["NumEtudiant"]};

// Définitions des relations entre les tables

RelModMat = MyDataSet.Relations.Add("ModMat", MyDataSet.Tables["Modules"].Columns["CodeModule"], MyDataSet.Tables["Matières"].Columns["CodeModule"]);

RelMatEpr = MyDataSet.Relations.Add("MatEpr", MyDataSet.Tables["Matières"].Columns["CodeMatière"], MyDataSet.Tables["Epreuves"].Columns["CodeMatière"]);

RelEprNot = MyDataSet.Relations.Add("EprNot", MyDataSet.Tables["Epreuves"].Columns["NumEpreuve"], MyDataSet.Tables["Notes"].Columns["NumEpreuve"]);

RelEtuNot = MyDataSet.Relations.Add("FKEtuNot", MyDataSet.Tables["Etudiants"].Columns["NumEtudiant"], MyDataSet.Tables["Notes"].Columns["NumEtudiant"]);

NbEnreg = MyDataSet.Tables["Modules"].Rows.Count;

NumEnreg = 0;

MyRow = MyDataSet.Tables["Modules"].Rows[NumEnreg];

TxtCodeModule.Text = MyRow["CodeModule"].ToString();

TxtLibelleModule.Text = MyRow["LibelléModule"].ToString();

EffacerListes();

MatieresDuModule(MyRow, RelModMat);

} ADO.NET Gestion des relations Visual C# - SQL Server 2000 L. Hassouni 4

private void LsbCodeMatière_SelectedIndexChanged(object sender, System.EventArgs e){ int Rang;

Rang = LsbCodeMatière.SelectedIndex;

LsbLibelleMatiere.SelectedIndex = Rang;

LsbCoefficient.SelectedIndex = Rang;

// Recherche de l'enregistrement dans la table matière qui correspond

// à la ligne sélectionné

MyFindRow = MyDataSet.Tables["Matières"].Rows.Find(LsbCodeMatière.SelectedItem.ToString());

// Affichage des epreuves en la matières

EpreuvesEnMatieres(MyFindRow, RelMatEpr);} private void LsbNumEpreuve_SelectedIndexChanged_1(object sender, System.EventArgs e){ int Rang;

Rang = LsbNumEpreuve.SelectedIndex;

LsbDate.SelectedIndex = Rang;

LsbLieu.SelectedIndex = Rang;

// Recherche de l'enregistrement dans la table matière qui correspond

// à la ligne sélectionné

MyFindRow = MyDataSet.Tables["Epreuves"].Rows.Find(short.Parse(LsbNumEpreuve.SelectedItem.ToString()));

// Affichage des epreuves en la matières

NotesEnEpreuve(MyFindRow, RelEprNot, RelEtuNot);} private void BtnPremier_Click(object sender, System.EventArgs e){ NumEnreg = 0;

MyRow = MyDataSet.Tables["Modules"].Rows[NumEnreg];

TxtCodeModule.Text = MyRow["CodeModule"].ToString();

TxtLibelleModule.Text = MyRow["LibelléModule"].ToString();

EffacerListes();

MatieresDuModule(MyRow, RelModMat);} private void BtnPrecedent_Click(object sender, System.EventArgs e){ if (NumEnreg ==0)

MessageBox.Show("Vous êtes sur le premier enregistrement");else {

NumEnreg--;

MyRow = MyDataSet.Tables["Modules"].Rows[NumEnreg];

TxtCodeModule.Text = MyRow["CodeModule"].ToString();

TxtLibelleModule.Text = MyRow["LibelléModule"].ToString();

EffacerListes();

MatieresDuModule(MyRow, RelModMat);} } ADO.NET Gestion des relations Visual C# - SQL Server 2000 L. Hassouni 5

private void BtnSuivant_Click(object sender, System.EventArgs e){ if (NumEnreg == NbEnreg-1)

MessageBox.Show("Vous êtes sur le dernier enregistrement");else {

NumEnreg++;

MyRow = MyDataSet.Tables["Modules"].Rows[NumEnreg];

TxtCodeModule.Text = MyRow["CodeModule"].ToString();

TxtLibelleModule.Text = MyRow["LibelléModule"].ToString();

EffacerListes();

MatieresDuModule(MyRow, RelModMat);} }

private void BtnDernier_Click(object sender, System.EventArgs e){ NumEnreg = NbEnreg-1;

MyRow = MyDataSet.Tables["Modules"].Rows[NumEnreg];

TxtCodeModule.Text = MyRow["CodeModule"].ToString();

TxtLibelleModule.Text = MyRow["LibelléModule"].ToString();

EffacerListes();

MatieresDuModule(MyRow, RelModMat);

}