• Aucun résultat trouvé

[PDF] Support de cours ADO.Net : Modèle objets d’accès aux données | Formation informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Support de cours ADO.Net : Modèle objets d’accès aux données | Formation informatique"

Copied!
15
0
0

Texte intégral

(1)

Ado .Net

Modèle objets d’accès aux données

Supports de cours

(2)

Sommaire

1 – Objet Connection

2 – Objet OleDbCommand et SQLCommand

3 – Objet DatReader

4 – Objet DataSet

5 – Objet DatAdapter

6 – Objet DataTable

(3)

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.

(4)

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.

(5)

- 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

(6)

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;

(7)

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*);

(8)

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 surcharge

(9)

Initialise 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 + "'";

(10)

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.

(11)

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.

(12)

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.

(13)

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.

(14)

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.

Exemple :

SqlDataReader oReader;

string strReq = "select * from ACTEUR where ACTCOD = '" +

txtCode.Text + "'";

SqlCommand oCommand = new SqlCommand(strReq, oConn);

try

{

oReader = oCommand.ExecuteReader();

if (!oReader.Read ())

(15)

MessageBox.Show ("Acteur

Inconnu","Erreur",MessageBoxButtons.OK,Mess

ageBoxIcon.Error);

}

else

{

Exo.exo2.Visible = false;

Exo.exo22 = new Exo22();

Exo.exo22.Visible = true;

}

oReader.Close ();

}

catch (Exception error)

{

MessageBox.Show (error.Message,

"Erreur",

MessageBoxButtons.OK,MessageBoxIcon.Error);

}

Références

Documents relatifs

Si des paroles ont été mises par écrit, c’est dans la perspective d’être postérieurement (re)lues. Dans la complexité des études épigraphiques, cette évidence est

Then, in Section III, we propose the main stability results for a general class of impulsive systems with several aperiodic and asynchronous sequences of impulses and derive

The good agreement observed on the apparent thermal conductivity measurements carried out with standardized methods (GHP and PHW) and the CFM method for different

Fig. 7: An Example of non-declared sponsored post: 1) A verified Mega influencer holding a box on her hand and promoting products. 2) The product page is tagged in the photo

La fouille a cepen- dant permis d’identifier nettement au moins quatre objets en argile crue distincts au sein de cette couche de destruction : deux grandes urnes sur pied 9 et

If the decision of evacuation is not taken, Orleans may move in the framework (because of the Loire force) and there will be new forces associated to that new position

du langage, c’est établir une théorie générale des signes, une sémiologie, dont la linguistique ne serait qu’un cas particulier. Décrire la langue, c’est établir un

Le coût des incendies de résidences lié au tabac est obtenu directement selon les chiffres publiés dans le rapport des coûts de l’abus de substance au Canada (2006) et qui sont