Vous êtes sur la page 1sur 14

LE MODE DÉCONNECTÉ

Travailler en mode déconnecté veut dire :


1. Récupération des données à partir de la source et en faire une copie locale. Travailler sur
des données en mémoire plutôt que directement sur un SGBD.
2. Modification des données en mode déconnecté
3. Intégration des données modifiées à la source avec éventuellement résolution des
conflits (contraintes d’intégrités)

Les objets utilises dans ce mode sont :


1. Connexion : permet d’établir la connexion
2. DataAdapter : contenant la requête Select. Il sert de liaison entre la source de données
et l’objet dataSet
3. DataSet : à la structure d’une base de données mais en local. Il peut être rempli par
l’objet DataAdapter ou bien crée indépendamment d’une source de données

DataSet

DataAdapter
Lecture de données
SelectCommand
InsertCommand Base de
Update command données
DeleteCommand Mise à jour de données
L'objet DataSet
DataSet est une représentation de données dans la mémoire entièrement
indépendant de données du point d'émission original.
Le principe de base du DataSet est de se connecter à une source de données , de
charger toutes ses tables avec leur relations, puis ensuite de travailler en mode déconnecté
sur ces tables en mémoire et enfin se reconnecter pour effectuer la mise à jour éventuelle
des données.
un DataSet contient pour l'essentiel deux types d'objets :
 des objets DataTable inclus dans une DataTableCollection
 des objets DataRelation inclus dans une DataRelationCollection

Un objet de classe DataTable est composé en particulier des objets suivants :


 Une propriété Columns = Collection de colonnes (collection d'objets DataColumn)
 Une propriété Rows = Collection de lignes (collection d'objets DataRow)
Il existe deux types de DataSet :
 Typed DataSet : Cela permet de créer une instance d’une classe DataSet déjà typée dans
votre projet.
 Untyped Dataset : Cela permet de créer une instance d’une classe DataSet non-typé de la
classe System.Data.DataSet.

Les données du dataSet peuvent provenir soit :


1. de l’application cliente (par exemple données saisies par l’utilisateur ou calculées par
l’application, etc.)
2. d’une base de données

• Pour créer un objet dataSet il faut instancier la classe DataSet

DataSet myDataSets = new DataSet()

• Ou passer le nom de DataSet comme paramètre. Si vous ne faites pas, le nom de défaut de
NewDataSet sera employé.

DataSet myDataSet = new DataSet("NomDataSet")


Parmi les propriétés de l’objet DataSet
Propriété Description
Tables Collection des tables contenues dans le dataSet
Relations Collection des relations qui relient des tables du dataSet

Méthodes publiques de l’objet DataSet


Méthode Description
Valide toutes les modifications en cours (méthode existant aussi pour les objets
AcceptChanges DataTable et DataRow). Bascule toutes les lignes de toutes les tables vers l’état
‘Unchanged’
Supprime toutes les lignes de toutes les tables du DataSet. A faire avant de recharger
Clear
un DataSet.
Merge Permet de fusionner deux DataSet
Reset Réinitialise le DataSet dans son état d’origine

Méthodes publiques de l’objet DataTableCollection


Méthode Description
Add Ajoute une table à la collection des tables du DataSet
• Après avoir créé votre DataSet, vous pouvez lui ajouter des DataTable comme ceci
• Pour créer un objet DataTable il faut instancier la classe DataTable puis le lier a l’objet
DataSet
DataTable Etudiant =new DataTable(″Etudiant″) ;
myDataSet.Tables.Add(Etudiant) ;
Parmi les propriétés de l’objet DataTable
Propriété Description
Columns Collection des colonnes de la table
Constraints Collection des contraintes de la table
Rows Collection des lignes de la table
PrimaryKey Tableau de colonnes faisant parti de la clé primaire
• Si vous ne spécifiez pas un nom de table en ajoutant une nouvelle table à un DataSet , le
nom de défaut TableN serez assigné, où N commence à un et est incrémenté par un.
• Pour mettre en référence une table particulière de nom dans DataSet :
DataTable myEtudiantTable = myDataSet.Tables["EtudiantTable "]

• Vous pouvez mettre en référence une table particulière par son index dans DataSet :
DataTable myEtudiantTable = myDataSet.Tables[0]

• Pour enlever une table d'un DataSet :


myDataSet.Tables.Remove("EtudiantTable ")
Ou
DataTable myEtudiantTable = myDataSet.Tables["EtudiantTable "]
myDataSet.Tables.Remove(myEtudiantTable)
L’objet DataColumn
Élément fondamental de l’objet DataTable (contenu dans la collection Columns)
En créant une colonne, on doit spécifier plusieurs informations :
 Le nom de la colonne
 Le type de la colonne
 Les propriétés de la colonne qui sont résumées dans le tableau suivant :
Propriété Description
AllowDBNull Autorise la valeur Null
DefaultValue Valeur par défaut de la colonne
Unique Définit si les valeurs de la colonne doivent être uniques
AutoIncrement Définit si la colonne est un compteur dont la valeur s’incrémente
automatiquement
AutoIncrementSeed Valeur de départ de l’incrément
AutoIncrementStep Pas de l’incrément
DataColumn col1 = new DataColumn("EleveID", typeof(int));
//DataColumn col1 = new DataColumn("EleveID", GetType(int));
Ds.Tables[″EtudiantTable ″].Columns.Add(col1)
Ds.Tables[″EtudiantTable ″].PrimaryKey = New DataColumn[]{col1}
DataColumn col2 = new DataColumn("nom", typeof(String));
Ds.Tables[″EtudiantTable”]).Columns.Add(col2)
DataColumn col3 = new DataColumn("DateN", typeof(DateTime));
Ds.Tables[″EtudiantTable ″].Columns.Add(col3)
• Le DataColumn est la clé pour créer un schéma d'un DataTable ;
• Pour regarder les noms de colonne entiers dans le DataColumnCollection

Foreach (DataColumn myDataColumn in myEtudiantTable.Columns


{
Console.WriteLine(myDataColumn.ColumnName) ;
}

• Pour mettre en référence une colonne de nom, employer la propriété des colonnes du
DataTable spécifiant le nom de colonne :

DataColumn myColumn;
myColumn = myEtudiantTable.Columns["nom”]

Nous pouvons également mettre en référence la colonne par index :

Dim myColumn As DataColumn;


myColumn = myClientTable.Columns[0];
L’objet DataRow
• Les objets de DataRow et de DataColumn composent le DataTable. Suivre les propriétés
et les méthodes de ces objets, nous pouvons mettre à jour, insérer, et supprimer
l'information des tables.
• Le DataRow représente les données réelles dans la table et il est contenu dans un objet
de collection de DataRowCollection.

• Pour regarder tous les articles dans la collection de DataRow, réitérer par la collection
comme suit :
Foreach (DataRow myDataRow in myEtudiantTable.Rows)
{
Console.WriteLine(myDataRow[2].ToString())
Console.WriteLine(myDataRow["Address"].ToString())
}
• Pour ajouter une nouvelle rangée à une table, employer la méthode de NewRow qui crée
un nouvel objet vide de DataRow avec le même schéma que la table.
// Crée un new row.
DataRow myRow ;
myRow = myEtudiantTable.NewRow()
//affecter les valeurs aux champs.
myRow["nom"] = "harouss";
myRow("Daten") = "11/10/1999";
// Ajouter la nouvelle range à la collection.
myEtudiantTable.Rows.Add(myRow)
Pour accéder à une colonne individuelle, employer la propriété d'article du DataRow. Nous
pouvons employer une valeur d'index, un nom de colonne, ou un objet de colonne pour
accéder à la colonne comme montrée :

Int myRowNumber = 0;
Int myColumnNumber = 2;
myEtudiantTable.Rows[myRowNumber][myColumnNumber];

// ou...
myEtudiantTable.Rows[myRowNumber]["nom"];

// ou...
DataColumn NomColumn ;
NomColumn = myEtudiantTable.Columns["nom"];
myEtudiantTable.Rows[myRowNumbe][ NomColumn];
Primary Keys(clé primaire)
• La plupart des tables ont un certain type de colonne unique ou une combinaison des
colonnes identifiant chaque rangée des données, qui s'appellent la clé primaire.
• Vous pouvez ajouter une clé primaire en plaçant la propriété d'AllowDBNull du
DataColumn à faux et la propriété unique pour rectifier :

DataColumn myColumn = myEtudiantTable.Columns.Add("nom",typeof(String));


myColumn.AllowDBNull = False;
myColumn.Unique = True ;

• Ou vous pouvez spécifier la propriété de PrimaryKey de l'objet de table ; ce qui accepte


un choix d'un ou plusieurs objets de DataColumn.

DataColumn[] myColumn;
myColumn[0] = myEtudiantTable.Columns["Num_Etu"];
myClientTable.PrimaryKey = myColumn ;
• Si vous avez une clef composée faite à partir des champs multiples, vous pouvez spécifier
une combinaison des noms de colonne pour employer pour la clé primaire dans la rangée
passée à la propriété de PrimaryKey :

DataColumn[] myColumn[2] ;
myColumn|0] = myEtudiantTable.Columns["Num_Etu"]
myColumn[1] = myEtudiantTable.Columns["nom"]
myCustomerTable.PrimaryKey = myColumn
L’objet DataRelation
Toutes les relations dans un DataSet sont maintenues dans un DataRelationCollection, qui
maintient toutes les relations d'enfant et de parent

DataColumn parentColumn
DataColumn childColumn
parentColumn = myDataSet.Tables("Auteurs").Columns("AutID")
childColumn = myDataSet.Tables("Livres").Columns("AutID ")
DataRelation relClientCommand
relClientCommand = new DataRelation("AUTLIV", parentColumn, childColumn)
' Ajouter la relation à DataSet.
myDataSet.Relations.Add(relClientCommand)

Vous aimerez peut-être aussi