Ado .Net
Modèle objets d’accès aux données
Supports de cours
Sommaire
1 – Objet Connection
2 – Objet OleDbCommand et SQLCommand
3 – Objet DatReader
4 – Objet DataSet
5 – Objet DatAdapter
6 – Objet DataTable
1 – Objet Connection
g Création et utilisation d’un objet Connection
Le rôle de l’objet Connection d’Ado.Net est de relier l’utilisateur de
données au fournisseur de données. Cet Objet représente une session unique
portant sur la base de données du fournisseur. D’autres objets, tel que les
objets Command, utilisent l’objet Connection pour effectuer des opérations
sur la base de données.
Il existe trois types d’objet Connection :
•
SqlConnection pour l’accès aux bases de données SQL Server.
•
OdbcConnection pour l’accès aux bases de données de
typeODBC.
•
OleDbConnection pour toutes les autres bases de données de
type OLE DB.
Processus d’utilisation de l’objet Connection :
•
Instanciation à l’aide du constructeur ou implicitement à l’aide des
objets Command ou DataAdapter
•
Mise en forme de la chaîne de connexion avec l’objet
ConnectionString
•
Utilisation de la méthode open pour établir la connexion à partir de
l’objet ConnectionString
•
Exécution des instructions sur les données, utilisation de l’objet
Command
•
La connexion est fermée à l’aide de la méthode close
cl Espaces de noms requis
En C#
Pour une connexion avec une data source ODBC
Using System.DataOdbc ;
//Objet OdbcConnection
Pour une connexion OleDb (ex : Microsoft Access)
Using System.DataOleDb
//Objet OleDbConnection
Pour une connexion SqlServeur
Using System.SqlClient
//Objet SqlConnection
Utiliser l’espace de nom correspondant au type de la base de données
utilisée.
g Construction d’un objet Connection
Création d’une instance de l’objet connection :
En C#
public OdbcConnection(string connectionString);
ou
public OleDbConnection (string connectionString);
ou
public SqlConnection(string connectionString);
Propriétés
ConnectionString
Cette propriété contient les informations nécessaires d’une connexion à
une source de donnée. Elle consiste en séquence de paramètres
délimités par des points-virgules de cette forme :
Nom_paramètre = ‘valeur du paramètre’ ;
Le tableau suivant énumère les noms valides des valeurs de mot clé dans ConnectionString .
Nom Valeur par défaut Description
Application Name Nom de l'application ou '.Net
SqlClient Data Provider' si aucun nom d'application n'est fourni. AttachDBFilename
- ou -
propriétés étendues - ou -
Initial File Name
Nom du fichier principal, y compris
le nom du chemin d'accès complet, d'une base de données connectable.
Le nom de la base de données doit être spécifié avec le mot clé 'database'.
Connect Timeout - ou -
Connection Timeout
15 Durée d'attente (e n secondes)
préalable à l'établissement d'une connexion au serveur avant que la tentative ne soit abandonnée et qu'une erreur ne soit générée.
Current Language Nom d'enregistrement du langage
SQL Server. Data Source
- ou - Server
Nom ou adresse réseau de
l'instance de SQL Server à laquelle se connecter.
- ou - Address - ou - Addr - ou - Network Address
Encrypt 'false' Si true, SQL Server utilise le
cryptage SSL pour tous les échanges de données se produisant entre le client et le serveur si celui-ci dispose d'un certificat installé. Les valeurs reconnues sont true, false, yes et no.
Initial Catalog - ou -
Database
Nom de la base de données.
Integrated Security - ou -
Trusted_Connection
'false' Lorsque la valeur est false, l'ID
d'utilisateur et le mot de passe sont spécifiés dans la connexion. Lorsque la valeur est true, les
informations actuelles d'identification du compte
Windows sont utilisées pour l'authentification.
Les valeurs reconnues sont true, false, yes, no et sspi (vivement recommand ée), qui équivaut à true.
Network Library - ou -
Net
'dbmssocn' Bibliothèque réseau permettant
d'établir une connexion à une instance de SQL Server. Les valeurs prises en charge sont les suivantes : dbnmpntw (canaux
nommés), dbmsrpcn (multiprotocole), db msadsn (Apple
Talk), dbmsgnet (VIA), dbmslpcn (mémoire partagée) et dbmsspxn (IPX/SPX), et dbmssocn (TCP/IP). La DLL réseau correspondante doit être installée sur le système auquel vous vous connectez. Si vous ne spécifiez pas de réseau et si vous utilise z un serveur local (par exemple, « . » ou « (local) »), la mémoire partagée est utilisée.
Packet Size 8192 Taille en octets des paquets
réseau permettant de communiquer avec une instance
de SQL Server. Password
- ou - Pwd
Mot de passe de la session du
compte SQL Server (non recommandé. Pour garantir le plus haut niveau de sécurité, Il est vivement recommandé d'utiliser de préférence le mot clé Integrated Security ou Trusted_Connection).
Persist Security Info 'false' Lorsqu'elles ont comme valeur
false ou no (vivement recommandée), les informations de sécurité, comme le mot de passe, ne sont pas retournées dans le cadre de la connexion si celle-ci est ouverte ou l'a été à un moment donné. Le rétablissement de la chaîne de connexion rétablit toutes les valeurs des chaînes de connexion, y compris le mot de passe. Les valeurs reconnues sont true, false, yes et no.
User ID Compte de connexion SQL Server
(non recommandé. Pour garantir le plus haut niveau de sécurité, Il est vivement recommandé d'utiliser de préférence le mot clé Integrated Security ou Trusted_Connection).
Workstation ID nom de l'ordinateur local Nom du poste de travail en cours de connexion à SQL Server.
Exemple de connexion à une base de données Sql*Server :
SqlConnection oConn;
string strConn = "Data Source=localhost; Integrated Security= SSPI; DataBase = VideoScar";
try {
oConn = new SqlConnection(strConn); oConn.Open();
txtEtat.Text = oConn.State.ToString(); }
catch (Exception error) {
txtEtat.Text = oConn.State.ToString() + " " + error.Message;
2 – Objet OleDbCommand et SqlCommand
Les objets OleDbCommand et SqlCommand permettent d’encapsuler une
commande pour exécuter sur un fournisseurde données.
-
OleDbCommand opère sur les fournisseurs managés
OLE DB, tels que Jet (Access) et Oracle, et quasiment
tous les fournisseurs de données possédant des
fournisseurs OLE DB correspondants.
-
SqlCommand
opère quand à lui sur le fournisseur
managé SQL Server de .NET ; il peut exécuter une
commande sur les versions 7.0 et ultérieurs de SQL
Server.
2.1 OleDbCommand
met en œuvre les méthodes suivantes exécutant des
commandes au niveau d'une source de données :
Elément Description
ExecuteReader Exécute des commandes qui retournent des
lignes. Il se peut que ExecuteReader n'ait pas l'effet souhaité s'il est utilisé pour exécuter des commandes telles que des instructions SQL SET.
ExecuteNonQuery Exécute des commandes telles que des
instructions SQL INSERT, DELETE, UPDAT E et SET.
ExecuteScalar Extrait une valeur unique (par exemple, une valeur d'agrégation) d'une base de données.
Constructeurs
Initialise une no uvelle instance de la classe OleDbCommand. Liste de surcharge
[Visual Basic] Public Sub New() [C#] public OleDbCommand(); [C++] public: OleDbCommand();
[JScript] public function OleDbCommand();
Initialise une nouvelle instance de la classe OleDbCommand avec le texte de la requête. [Visual Basic] Public Sub New(String)
[C#] public OleDbCommand(string); [C++] public: OleDbCommand( String*);
[JScript] public function OleDbCommand(String);
Initialise une nouvelle instance de la classe OleDbCommand avec le texte de la requête et OleDbConnection .
[Visual Basic] Public Sub New(String, OleDbConnection) [C#] public OleDbCommand(string, OleDbConnection); [C++] public: OleDbCommand(String*, OleDbConnection*);
Initialise une nouvelle instance de la classe OleDbCommand avec le texte de la requête, OleDbConnection et Transaction.
[Visual Basic] Public Sub New(String, OleDbConnection, OleDbTransaction) [C#] public OleDbCommand(string, OleDbConnection, OleDbTransaction); [C++] public: OleDbCommand(String*, OleDbConnection*, OleDbTransaction*); [JScript] public function OleDbCommand(String, OleDbConnection, OleDbTransaction);
Exemple : requête et connexion
string strReq = "select * from ACTEUR where ACTCOD = '" +
txtCode.Text + "'";
OleDbCommand oCommand = new OleDbCommand (strReq, oConn);
2.2 SqlCommand
met en œuvre les méthodes suivantes pour l'exécution de
commandes au niveau d'une base de données SQL Server :
Elément Description
ExecuteReader Exécute la commande dans CommandText sur
SqlConnection assigné et renvoie un objet SqlDataReader. SqlDataReader est un curseur en lecture avant uniquement, q ui se déplace sur l’ensemble des lignes. Afin d'améliorer les performances, ExecuteReader appelle des commandes à l'aide de la procédure stockée système sp_executesql Transact -SQL. Par conséquent, il se peut que ExecuteReader n'ait pas l'effet souhaité s'il est utilisé pour exécuter des commandes telles que des instructions Transact -SQL SET.
ExecuteNonQuery Exécute des commandes telles que des
instructions Transact -SQL INSERT, DELETE, UPDATE et SET.
ExecuteScalar Extrait une valeur unique (par exemple, une valeur d'agrégation) d'une base de données.
ExecuteXmlReader Envoie CommandText à Connection et génère un objet XmlReader.
Vous pouvez réinitialiser la propriété CommandText et réutiliser l'objet SqlCommand.
Cependant, vous devez fermer SqlDataReader avant d'exécuter une commande
nouvelle ou précédente.
Constructeurs
Initialise une nouvelle instance de la classe SqlCommand.
Liste de surchargeInitialise une nouvelle instance de la classe SqlCommand. Pris en charge par le .NET Compact Framework.
[Visual Basic] Public Sub New() [C#] public SqlCommand(); [C++] public: SqlCommand();
[JScript] public function SqlCommand();
Initialise une nouvelle instance de la classe SqlCommand avec le texte de la requête. Pris en charge par le .NET Compact Framework.
[Visual Basic] Public Sub New(String) [C#] public SqlCommand(string); [C++] public: SqlCommand(String*);
[JScript] public function SqlCommand(String);
Initialise une nouvelle instance de la classe SqlCommand avec le texte de la requête et SqlConnection.
Pris en charge par le . NET Compact Framework. [Visual Basic] Public Sub New(String, SqlConnection) [C#] public SqlCommand(string, SqlConnection); [C++] public: SqlCommand(String*, SqlConnection*);
[JScript] public function SqlCommand(String, SqlConnection);
Initialise une nouvelle instance de la classe SqlCommand avec le texte de la requête, SqlConnection et SqlTransaction .
Pris en charge par le .NET Compact Framework.
[Visual Basic] Public Sub New(String, SqlConnection, SqlTransacti on) [C#] public SqlCommand(string, SqlConnection, SqlTransaction); [C++] public: SqlCommand(String*, SqlConnection*, SqlTransaction*); [JScript] public function SqlCommand(String, SqlConnection, SqlTrans action);
Exemple : requête et chaîne de connexion
string strReq = "select * from ACTEUR where ACTCOD = '" +
txtCode.Text + "'";
3 – Objet DataReader (OleDbDataReader, OdbcDataReader,
SqldataReader)
L’objet DataReader sert à accéder aux informations contenues dans
l’entrepôt de données. Il résulte de l’exécution de la méthode ExecuteReader sur
un objet OleDbCommand ou SqlCommand.
C’est l’un des deux mécanismes mis à disposition des développeurs par ADO
.NET. L’autre mécanisme utilise un objet DataAdapter pour transférer les
informations vers un DataSet (Chapitre suivant
L’objet DataReader fournit un mécanisme en lecture seule, en avant
seulement, qui permet d’extraire les informations d’un entrepôt de données sous
forme d’un flux, tout en restant connecté à la source de données. Les performances
de ce mécanisme sont élevées. ). L’objet DataReader ne stocke en mémoire qu’une
seule ligne à la fois, permettant ainsi d’augmenter les performances d’une application
en d’en réduire la charge.
Le DataReader est limité, mais hautement optimisé. Il est important de
connaître les caractéristiques du DataReader avant de décider quel mécanisme
utiliser dans une application pour accéder aux données :
-
Pas de besoin de réaliser un cache des données
-
Le jeu d’enregistrement est trop important pour être
stocké en mémoire
-
Accès rapide aux données en lecture seule en avant
seulement.
-
Accès aux données en mode connecté.
-
Par défaut, un DataReader charge une ligne entière en mémoire à chaque appel de
la méthode Read. Il est possible d’accéder aux valeurs des colonnes soit par leurs
noms soit par une référence ordinales. Une solution plus performante est proposée
permettant d’accéder aux valeurs dans leurs types de données natifs (GetInt32,
GetDouble
, GetString, …).
Exemple : première colonne indicée par 0, de type int.
int i iColonne ;
iColonne = oDataReader.GetInt32(0) ;
Fermeture du DataReader
Vous devez toujours appeler la méthode Close lorsque vous avez fini d'utiliser
l'objet DataReader.
Si Command contient des paramètres de sortie ou des valeurs de retour, ils ne
seront pas disponibles avant la fermeture du DataReader.
Notez que pendant l'ouverture d'un DataReader, Connection est utilisé en mode
exclusif par ce DataReader. Vous ne pourrez pas exécuter les commandes pour
Connection
, y compris la création d'un autre DataReader, jusqu'à la fermeture du
DataReader
d'origine.
Constructeurs
Il n’y a pas de constructeur de DataReader. La seule manière de créer un
objet DataReader est d’appeler la méthode ExecuteReader sur l’objet
OleDbCommand ou SqlCommand.
Propriétés publiques Depth
Pris en charge par le .NET C ompact Framework.
Obtient une valeur indiquant la profondeur d'imbrication de la ligne en cours.
FieldCount
Pris en charge par le .NET Compact Framework.
Obtient le nombre de colonnes figurant dans la ligne en cours.
HasRows
Obtient une valeur indiquant si le SqlDataReader contient une ou plusieurs lignes.
IsClosed
Pris en charge par le .NET Compact Framework.
Obtient une valeur indiquant si le lecteur de données est fermé.
Item Surchargé. Obtient la valeur d'une colonne dans
son format natif.
En C#, cette propriété est l'indexeur pour la classe SqlDataReader .
RecordsAffected
Pris en charge par le .NET Compact Framework.
Obtient le nombre de lignes modifiées, insérées ou supprimées en exécutant l'instruction Tra nsact-SQL.
Méthodes publiques Close
Pris en charge par le .NET Compact Framework.
Ferme l'objet SqlDataReader .
CreateObjRef (hérité de MarshalByRefObject )
Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant. Equals (hérité de Object)
Pris en charge par le .NET Compact Framework.
Surchargé. Détermine si deux instances de Object sont égales.
GetBoolean
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifi ée comme Boolean.
GetByte
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme d'un octet.
GetBytes
Pris en charge par le .NET Compact Framework.
Lit un flux d'octets à partir de l'offset de colonne spécifié dans la mémoire tampon sous la for me d'un tableau commençant à l'offset de mémoire tampon donné.
GetChar
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colon ne spécifiée sous la forme d'un caractère unique.
GetChars
Pris en charge par le .NET Compact Framework.
Lit un flux de caractères à partir de l' offset de colonne spécifié dans la mémoire tampon sous la forme d'un tableau commençant à l'offset de mémoire tampon donné.
GetDataTypeName
Pris en charge par le .NET Compact Framework.
Obtient le nom du type de données source.
GetDateTime
Pris en charge par le .NET Compact Frame work.
Obtient la valeur de la colonne spécifiée sous la forme d'un objet DateTime.
GetDecimal
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme d'un objet Decimal .
GetDouble
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme d'un nombre en virgule flottante double précision.
GetFieldType
Pris en charge par le .NET Compact Framework.
Obtient le Type qui correspond au type de données de l'objet.
GetFloat
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonn e spécifiée sous la forme d'un nombre en virgule flottante simple précision.
GetGuid
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme d'un identificateur global unique (GUID, Globally-Unique IDentifier).
GetHashCode (hérité de Object)
Pris en charge par l e .NET Compact Framework.
Sert de fonction de hachage pour un type particulier, adapté à une utilisation dans des algorithmes de hachage et des structures de données telles qu'une table de hachage. GetInt16
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme d'un entier signé 16 bits.
GetInt32
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme d'un entier signé 32 bits.
GetInt64
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme d'un entier signé 64 bits.
GetLifetimeService (hérité de MarshalByRefObject )
Extrait l'objet de service de durée de vie en cours qui contrôle la stratégie de duré e de vie de cette instance.
GetName
Pris en charge par le .NET Compact Framework.
Obtient le nom de la colonne spécifiée.
GetOrdinal
Pris en charge par le .NET Compact Framework.
Obtient le numéro de la colonne, en fonction du nom de la colonne.
Pris en charge par le .NET Compact Framework.
de la colonne de SqlDataReader . GetSqlBinary
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne sp écifiée sous la forme de SqlBinary.
GetSqlBoolean
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme de SqlBoolean.
GetSqlByte
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme de SqlByte.
GetSqlDateTime
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécif iée sous la forme de SqlDateTime.
GetSqlDecimal
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme de SqlDecimal.
GetSqlDouble
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme de SqlDouble.
GetSqlGuid
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécif iée sous la forme de SqlGuid.
GetSqlInt16
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme de SqlInt16.
GetSqlInt32
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme de SqlInt32.
GetSqlInt64
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme de SqlInt64.
GetSqlMoney
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme de SqlMoney.
GetSqlSingle
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme de SqlSingle.
GetSqlString
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme de SqlString.
GetSqlValue
Pris en charge par le .NET Com pact Framework.
Obtient un Object qui est une représentation du Variant SqlDbType sous-jacent.
GetSqlValues
Pris en charge par le .NET Compact Framework.
Obtient toutes les colonnes d'attributs figurant dans la ligne en cours.
GetString
Pris en charge par le .NET Compact Framework.
Obtient la valeur de la colonne spécifiée sous la forme d'une chaîne.
GetType (hérité de Object)
Pris en charge par le .NET Compact Framework.
Obtient le Type de l'instance en cours.
Pris en charge par le .NET Compact Framework.
format natif. GetValues
Pris en charge par le .NET Compact Framework.
Obtient toutes les colonnes d'attributs figurant dans la collection de la ligne en cours. InitializeLifetimeService (hérité de
MarshalByRefObject )
Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.
IsDBNull
Pris en charge par le .NET Compact Framework.
Obtient une valeur indiquant si la colonne contient des valeurs inexistantes ou manquantes.
NextResult
Pris en charge par le .NET Compact Framework.
Avance le lecteur de données jusqu'au résultat suivant, lors de la lectur e des résultats des instructions Transact -SQL par lot.
Read
Pris en charge par le .NET Compact Framework.
Avance SqlDataReader jusqu'au prochain enregistrement.
ToString (hérité de Object)
Pris en charge par le .NET Compact Framework.
Retourne un String qui représente l' Object en cours.
Méthodes protégées Finalize (hérité de Object)
Pris en charge par le .NET Compact Framework.
Substitué. Autorise Object à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant que Object soit récupéré par l'opération garbage collection.
En C# et C++, les finaliseurs sont exprimés à l'aide de la syntaxe des destructeurs.
MemberwiseClone (hérité de Object)
Pris en charge par le .NET Compact Framework.
Crée une copie partielle de l' Object en cours.
Implémentations d'interface explicites
IEnumerable.GetEnumerator Ce membre prend en charge l'infrastructure .NET Framework et n'est pas destiné à être directement utilisé à partir de votre code.