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()); } } }