ADO.NET (C#)



En résumer


ADO.NET est un ensemble de composants présents de base dans le framework .NET permettant l’accès et la gestion de données situées sur une base de données relationnelle (SQL Server, Oracle, etc..) ou non.

Quelques notion de base 


Connection: Ouvre une connexion vers une source de données spécifiques

Command: Exécute une commande sur une source de données

DataReader: Lit un flux de données à partir d'une source de données en mode connecté. Le                             mode d'accès est en lecture seule avec un curseur en avant seulement.

DataSet: Représente un ensemble de données en mode déconnecté. Il peut être constitué de                       plusieurs tables ainsi que des relations et contraintes existant entre elles.

DataAdapter: Remplit un DataSet et répercute les mises à jour dans la source de données.




Une fois la connexion vers une base de données effectuée, vous pouvez exécuter une requête et récupérer son résultat en utilisant l'objet Command. Contrairement au fonctionnement des ADO où il était possible d'exécuter une requête sans utiliser l'objet Command, vous devez désormais systématiquement le faire.
La création d'un objet Command nécessite l'instanciation d'un objet SqlCommand. Cet objet expose différentes méthodes Execute à utiliser selon le résultat attendu :
  • La méthode ExecuteReader peut être utilisée pour récupérer un jeu d'enregistrement et retourne un objet DataReader ;
  • La méthode ExecuteScalar récupère une valeur unitaire ;
  • La méthode ExecuteNonQuery exécute une commande ne retournant pas de lignes.

Mode connecté / Mode déconnecté


 L’ADO.NET permet de séparer les actions d’accès ou de modification d’une base de données. En effet, il est possible de manipuler une base de données sans être connecté à celle-ci, il suffit juste de se connecter pendant un court laps de temps afin de faire une mise à jour. Ceci est possible grâce au DataSet. C’est pourquoi, il existe deux types de fonctionnements : 
  • Le mode connecté
  • Le mode déconnecté
Ci-après, la différence par avantages et inconvénients :



    Voila le scripte de la base de donnes de  pratique suivant :


    create database miseajours_personne
    use miseajours_personne
    create table personne(id int primary key,nom varchar(25),prenom varchar(25),age int)
    insert into personne values(1,'ANI','HAKIM',28)
    select * from personne


    Le mode Connecté



















    //Plusieurs espaces de noms sont disponibles avec ADO.Net il faut aussi ajouter ces deux en jaune :

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;


    namespace miseajour
    {
        public partial class Form1 : Form
        {
            //Declaration 

            SqlConnection cn = new SqlConnection("Data Source=.;Initial Catalog=miseajours_personne;Integrated Security=True");
            SqlCommand cmd = new SqlCommand();
            SqlDataReader dr;

            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                //code de ramplir combobox
                cn.Open();
                cmd.Connection = cn;
                cmd.CommandText = "select * from personne";
                dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    combid.Items.Add(dr[0]);
                }
                dr.Close();
            }

            private void btnajouter_Click(object sender, EventArgs e)//bouton ajouter
            {
                cmd.Connection = cn;
                cmd.CommandText = "insert into personne values(" + txtid.Text + ",'" + txtnom.Text + "','" + txtprenom.Text + "'," + txtage.Text + ")";
                //pour enregistrer dans la table personne
                cmd.ExecuteNonQuery();
                MessageBox.Show(" personne bien ajouter");
            }

            private void btnsupprimer_Click(object sender, EventArgs e)//bouton supprimer
            {
                cmd.Connection = cn;
                cmd.CommandText = "delete personne where id=" + txtid.Text + "";
                //pour supprimer dans la table personne
                cmd.ExecuteNonQuery();
                MessageBox.Show(" personne bien supprimer");
            }

            private void btnmodifier_Click(object sender, EventArgs e)
            {
                cmd.Connection =cn;
                cmd.CommandText = "update personne set nom='" + txtnom.Text +"',prenom='" + txtprenom.Text + "',age="+Convert.ToInt32(txtage.Text)+" where id="+Convert.ToInt32( txtid.Text)+"";
                //pour modifier dans la table personne
                cmd.ExecuteNonQuery();
                MessageBox.Show(" personne bien modifier");

            }

            private void btnchercher_Click(object sender, EventArgs e)
            {
                //rechercher (selectionne un id plus click sur boutton rechercher)
                try
                {
                    cmd.Connection = cn;
                    cmd.CommandText = "select * from personne where id=" + combid.SelectedItem + "";
                    dr = cmd.ExecuteReader();
                    while (dr.Read())
                    {
                        txtid.Text = dr[0].ToString();
                        txtnom.Text = dr[1].ToString();
                        txtprenom.Text = dr[2].ToString();
                        txtage.Text = dr[3].ToString();
                    }
                    dr.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("" + ex);
                }

            }
        }

    }


    Code source de pratique :



    La mise a joure plus les boutton de navigation et l 'affichage dans datagridview:






    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;


    namespace miseajour
    {
        public partial class Form1 : Form
        {
            //Declaration 

            SqlConnection cn = new SqlConnection("Data Source=.;Initial Catalog=miseajours_personne;Integrated Security=True");
            SqlCommand cmd = new SqlCommand();
            SqlDataReader dr;
            int position;

            public Form1()
            {
                InitializeComponent();

            }

            private void Form1_Load(object sender, EventArgs e)
            {
                //code de ramplir combobox/datagrideview
                cn.Open();
                cmd.Connection = cn;
                cmd.CommandText = "select * from personne";
                dr = cmd.ExecuteReader();
                dataGridView1.Columns.Add("id","id");
                dataGridView1.Columns.Add("nom", "nom");
                dataGridView1.Columns.Add("prenom", "prenom");
                dataGridView1.Columns.Add("age", "age");
                int i = 0;


                while (dr.Read())
                {
                    combid.Items.Add(dr[0]);
                    dataGridView1.Rows.Add();
                    dataGridView1.Rows[i].Cells[0].Value = dr["id"];
                    dataGridView1.Rows[i].Cells[1].Value = dr["nom"];
                    dataGridView1.Rows[i].Cells[2].Value = dr["prenom"];
                    dataGridView1.Rows[i].Cells[3].Value = dr["age"];
                    i++;
                }
                dr.Close();
            }

            private void btnajouter_Click(object sender, EventArgs e)//bouton ajouter
            {
                cmd.Connection = cn;
                cmd.CommandText = "insert into personne values(" + txtid.Text + ",'" + txtnom.Text + "','" + txtprenom.Text + "'," + txtage.Text + ")";
                //pour enregistrer dans la table personne
                cmd.ExecuteNonQuery();
                MessageBox.Show(" personne bien ajouter");
            }

            private void btnsupprimer_Click(object sender, EventArgs e)//bouton supprimer
            {
                cmd.Connection = cn;
                cmd.CommandText = "delete personne where id=" + txtid.Text + "";
                //pour supprimer dans la table personne
                cmd.ExecuteNonQuery();
                MessageBox.Show(" personne bien supprimer");
            }

            private void btnmodifier_Click(object sender, EventArgs e)
            {
                cmd.Connection =cn;
                cmd.CommandText = "update personne set nom='" + txtnom.Text +"',prenom='" + txtprenom.Text + "',age="+Convert.ToInt32(txtage.Text)+" where id="+Convert.ToInt32( txtid.Text)+"";
                //pour modifier dans la table personne
                cmd.ExecuteNonQuery();
                MessageBox.Show(" personne bien modifier");

            }

            private void btnchercher_Click(object sender, EventArgs e)
            {
                //rechercher (selectionne un id plus click sur boutton rechercher)
                try
                {
                    cmd.Connection = cn;
                    cmd.CommandText = "select * from personne where id=" + combid.SelectedItem + "";
                    dr = cmd.ExecuteReader();
                    while (dr.Read())
                    {
                        txtid.Text = dr[0].ToString();
                        txtnom.Text = dr[1].ToString();
                        txtprenom.Text = dr[2].ToString();
                        txtage.Text = dr[3].ToString();
                    }
                    dr.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("" + ex);
                }

            }

            //methode pour navigation

            public void naviger()
             {
               cmd.Connection = cn;
               cmd.CommandText = "select * from personne";
                 dr = cmd.ExecuteReader();
                   for (int i = 0; i <= position; i++){
                      dr.Read();
                }
                txtid.Text = dr[0].ToString();
                txtnom.Text = dr[1].ToString();
                txtprenom.Text = dr[2].ToString();
                txtage.Text = dr[3].ToString();
              dr.Close();
             }

    //Les bouttons de navigation

            private void btnfirst_Click(object sender, EventArgs e)
            {
                position = 0;
                naviger();

            }

            private void btnprecedent_Click(object sender, EventArgs e)
            {
                try
                {
                    position--;
                    naviger();
                }
                catch
                {
                    dr.Close();
                }

            }

            private void btnnext_Click(object sender, EventArgs e)
            {
                try
                {
                    position++;
                    naviger();
                }
                catch { 
                    dr.Close();
                }

            }

            private void btnlast_Click(object sender, EventArgs e)
            {
                cmd.Connection = cn;
                cmd.CommandText = "select count(*) from personne";
                position = Convert.ToInt32(cmd.ExecuteScalar()) - 1;
                naviger();

            }
        }
    }

    Code source de pratique navigation et datagridview :




    Previous
    Next Post »
    0 Komentar