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