03 exploitation d une base en mode deconnecté - c# - dotnet

ADO.NET Exploitation d’une base en mode déconnecté Visual C# - SQL Server 2000 L. Hassouni 1 ADO.NET Mode Déconnecté Objet : Exploitation d’une base de données en mode déconnecté Objets utilisés : SqlConnection, SqlCommand, SQLDataAdapter, SQLCommandBuilder, DataSet Concevez une application qui permet d’effectuer en mode connecté les opérations suivantes :  Consultation d’enregistrement  Ajout de nouveaux enregistrements  Modification d’enregistrements  Suppression d’enregistrements  Rechercher un enregistrement Nous vous proposons l’interface ci-dessous : ADO.NET Exploitation d’une base en mode déconnecté Visual C# - SQL Server 2000 L. Hassouni 2 Correction /// Variable nécessaire au concepteur. static SqlConnection MySqlConn; static SqlCommand MySqlCmd; static SqlDataAdapter MySqlDataAdapter; static SqlCommandBuilder MySqlCmdBuilder; static DataSet MyDataSet; static string MyStrConn, MyStrSql; static int NumEnreg, NbEnreg; static DataRow Row, MyFindRow; private void BtnConnexion_Click(object sender, System.EventArgs e) { MyStrConn = "Server = Localhost; Integrated Security = SSPI; initial catalog = SQLJDNotation"; MySqlConn = new SqlConnection(MyStrConn); MyStrSql = "SELECT * FROM Etudiants"; MySqlCmd = new SqlCommand(MyStrSql, MySqlConn); MySqlDataAdapter = new SqlDataAdapter(); MySqlDataAdapter.SelectCommand = MySqlCmd; MySqlCmdBuilder = new SqlCommandBuilder(MySqlDataAdapter); MyDataSet = new DataSet(); MySqlDataAdapter.Fill(MyDataSet, "Etudiants"); MyDataSet.Tables["Etudiants"].PrimaryKey = new DataColumn[]{MyDataSet.Tables["Etudiants"].Columns["NumEtudiant"]}; NbEnreg = MyDataSet.Tables["Etudiants"].Rows.Count; NumEnreg = 0;

MessageBox.Show(NbEnreg.ToString()); } private void BtnPremier_Click(object sender, System.EventArgs e) { NumEnreg = 0; Row = MyDataSet.Tables["Etudiants"].Rows[NumEnreg]; TxtNumEtudiant.Text = Row["NumEtudiant"].ToString(); TxtNom.Text = Row["Nom"].ToString(); TxtPrenom.Text = Row["Prénom"].ToString(); TxtDateNaiss.Text = (Row["DateNaissance"].ToString()); TxtNumNbEnreg.Text = (NumEnreg+1).ToString() + " / " + NbEnreg.ToString(); } private void BtnSuivant_Click(object sender, System.EventArgs e) { if (NumEnreg <- NbEnreg-1) {

NumEnreg++;

Row = MyDataSet.Tables["Etudiants"].Rows[NumEnreg];

TxtNumEtudiant.Text = Row["NumEtudiant"].ToString();

TxtNom.Text = Row["Nom"].ToString();

TxtPrenom.Text = Row["Prénom"].ToString();

TxtDateNaiss.Text = (Row["DateNaissance"].ToString());

TxtNumNbEnreg.Text = (NumEnreg+1).ToString() + " / " + NbEnreg.ToString(); } else {

TxtNumEtudiant.Clear();

TxtNom.Clear();

TxtPrenom.Clear();

TxtDateNaiss.Clear();

TxtNumNbEnreg.Text = (NumEnreg+1).ToString() + " / " + NbEnreg.ToString(); } ADO.NET Exploitation d’une base en mode déconnecté Visual C# - SQL Server 2000 L. Hassouni 3 } private void BtnPrecedent_Click(object sender, System.EventArgs e) { if (NumEnreg > 0)

NumEnreg--; Row = MyDataSet.Tables["Etudiants"].Rows[NumEnreg]; TxtNumEtudiant.Text = Row["NumEtudiant"].ToString(); TxtNom.Text = Row["Nom"].ToString(); TxtPrenom.Text = Row["Prénom"].ToString(); TxtDateNaiss.Text = (Row["DateNaissance"].ToString()); TxtNumNbEnreg.Text = (NumEnreg+1).ToString() + " / " + NbEnreg.ToString(); } private void BtnDernier_Click(object sender, System.EventArgs e) { NumEnreg = NbEnreg - 1; Row = MyDataSet.Tables["Etudiants"].Rows[NumEnreg]; TxtNumEtudiant.Text = Row["NumEtudiant"].ToString(); TxtNom.Text = Row["Nom"].ToString(); TxtPrenom.Text = Row["Prénom"].ToString(); TxtDateNaiss.Text = (Row["DateNaissance"].ToString()); TxtNumNbEnreg.Text = (NumEnreg+1).ToString() + " / " + NbEnreg.ToString(); } private void BtnAjouter_Click(object sender, System.EventArgs e) { DataRow MyNewRow = MyDataSet.Tables["Etudiants"].NewRow(); MyNewRow["NumEtudiant"] = short.Parse(TxtNumEtudiant.Text); MyNewRow["Nom"] = TxtNom.Text; MyNewRow["Prénom"] = TxtPrenom.Text; MyNewRow["DateNaissance"] = DateTime.Parse(TxtDateNaiss.Text); //Pour éviter les doublons, vérifier que le nouveau NumEtudiant n'existe pas dans la table MyFindRow = MyDataSet.Tables["Etudiants"].Rows.Find(MyNewRow["NumEtudiant"]); if (MyFindRow == null) {

MyDataSet.Tables["Etudiants"].Rows.Add(MyNewRow);

MySqlDataAdapter.Update(MyDataSet, "Etudiants");

MyFindRow = MyDataSet.Tables["Etudiants"].Rows.Find(MyNewRow["NumEtudiant"]);

MessageBox.Show("L'enregistrement a été ajouté");

NbEnreg++;

NumEnreg = NbEnreg-1;

TxtNumNbEnreg.Text = (NumEnreg+1).ToString() + " / " + NbEnreg.ToString();

TxtNumEtudiant.Clear();

TxtNom.Clear();

TxtPrenom.Clear();

TxtDateNaiss.Clear(); } else

MessageBox.Show("Ce numéro existe déja"); } private void BtnModifier_Click(object sender, System.EventArgs e) { MyDataSet.Tables["Etudiants"].Rows[NumEnreg]["NumEtudiant"] = short.Parse(TxtNumEtudiant.Text); MyDataSet.Tables["Etudiants"].Rows[NumEnreg]["Nom"] = TxtNom.Text; MyDataSet.Tables["Etudiants"].Rows[NumEnreg]["Prénom"] = TxtPrenom.Text; MyDataSet.Tables["Etudiants"].Rows[NumEnreg]["DateNaissance"] = DateTime.Parse(TxtDateNaiss.Text); MySqlDataAdapter.Update(MyDataSet, "Etudiants"); } ADO.NET Exploitation d’une base en mode déconnecté Visual C# - SQL Server 2000 L. Hassouni 4 private void BtnSupprimer_Click(object sender, System.EventArgs e) { MyDataSet.Tables["Etudiants"].Rows[NumEnreg].Delete(); MySqlDataAdapter.Update(MyDataSet, "Etudiants"); NbEnreg--; if (NumEnreg == NbEnreg)

NumEnreg--; Row = MyDataSet.Tables["Etudiants"].Rows[NumEnreg]; TxtNumEtudiant.Text = Row["NumEtudiant"].ToString(); TxtNom.Text = Row["Nom"].ToString(); TxtPrenom.Text = Row["Prénom"].ToString(); TxtDateNaiss.Text = (Row["DateNaissance"].ToString()); TxtNumNbEnreg.Text = (NumEnreg+1).ToString() + " / " + NbEnreg.ToString(); } private void BtnChercher_Click(object sender, System.EventArgs e) { MyFindRow = MyDataSet.Tables["Etudiants"].Rows.Find(short.Parse(TxtNumEtudToFind.Text)); Row = MyFindRow; TxtNumEtudiant.Text = Row["NumEtudiant"].ToString(); TxtNom.Text = Row["Nom"].ToString(); TxtPrenom.Text = Row["Prénom"].ToString(); TxtDateNaiss.Text = (Row["DateNaissance"].ToString()); } } }