Sie sind auf Seite 1von 8

Procdure Stocke sous SQL Server 2000 et utilisation dans une applica...

http://barlatier.developpez.com/csharp/procedurestockee/cours/

Forums Tutoriels Magazine FAQs Blogs Projets Chat Newsletter Emploi Contacts

Accueil Conception Java .NET Dv. Web EDI Langages SGBD Office Solutions d'entreprise Applications Systmes
.NET
FORUMS .NET FAQs .NET

Visual Studio

ASP.NET

C#

Visual Basic.NET
OUTILS .NET BLOG .NET DOTNET TV

TUTORIELS .NET

SOURCES .NET

LIVRES .NET

Procdure Stocke sous SQL Server 2000 et utilisation dans une application Windows Forms .NET en C#
Date de publication : 05/09/2005 Par Nicolas BARLATIER Ce cours est destin plus au programmeur intermdiaire, un dbutant peut suivre ce cours condition d'avoir un minimum de connaissances en SQL, Transact-SQL et SQL Server 2000 en gnral (pas besoin de connaitre l'administration par exemple). 1. Cration d'une procdure stocke : Pourquoi une procdure stocke ? Cration d'une procdure stocke Test de la procdure stocke sous SQL Server 2000 2. Utilisation de la procdure stocke dans une application Windows Forms avec C# 3. Conclusion 4. Rfrences

1. Cration d'une procdure stocke :


Pourquoi une procdure stocke ?
Une procdure stocke c'est quoi exactement ? Une procdure stocke est une routine crite en Transact-SQL (langage driv du SQL, spcialis pour des traitements avancs sous SQL Server) qui agit sur les lignes d'une ou plusieurs tables. Toutes les instructions SQL permettent d'agir sur des lignes slectionnes (elles slectionnent, mettent jour, suppriment les lignes). Mais SQL n'est pas en mesure de changer le cours de l'action qui dpends des valeurs des champs. Il existe peu de fonctions permettant de raliser des oprations un peu complexe, par exemple il n'y a pas d'instruction IF, peu de fonctions pour manipuler les Strings (Chanes de caractres), aucune fonction de formattage etc. Donc tous les concepteurs de systme de gestion de base de donnes font tendre le SQL standard avec des instructions qui ajoutent les fonctionnalits d'un langage de programmation. Les procdures stockes sont rattaches aux bases de donnes SQL Server et deviennent des objets de la base de donnes, tout comme les tables et les vues. L'application la plus simple des procdures stockes est de rattacher des requtes complexes une base de donnes et de les appeler par leurs noms, afin que les utilisateurs n'ont pas les taper plus d'une fois. Une procdure stocke est excute sur le serveur et utilise des instructions T-SQL. T-SQL est pratiquement un langage de programmation. Il ne possde aucune interface utilisateur donc vous ne pouvez pas l'utiliser pour dvelopper des applications compltes, mais lorsqu'il s'agit de faire des requtes, de mettre jour la base de donnes, de traiter les donnes, ce langage peut tout faire. Alors on revient maintenant sur la question; Pourquoi Utiliser des procdures stockes au lieu des requtes SQL directement ? La rponse est que T-SQL est le langage natif de SQL Server et les procdures stockes sont excutes sur le serveur. Une procdure stocke peut scanner des milliers d'enregistrements, effectuer des calculs etc. Si vous effectuez des calculs qui impliquent un grand nombre de lignes, vous pouvez viter de tlcharger trop d'informations vers le client en crivant une procdure stocke pour effectuer le travail sur le serveur la place ! Les Procdures Stockes sont excutes plus rapidement car elles sont compiles et elles n'ont pas besoin de dplacer les donnes du serveur vers le client. Une autre bonne raison d'utiliser les procdures stockes est : une fois qu'elles sont dfinies, elles font partie de la base de donnes et apparaissent aux applications comme des objets de la base de donnes tout comme des tables et des vue. En incluant toutes ces fonctionnalits dans la procdure stocke vous allez simplifier le codage de l'application client. OUF ! C'est la fin du blabla de la thorie dsol ! Maintenant allons la pratique, plus fun !

1 sur 8

05/10/2009 22:37

Procdure Stocke sous SQL Server 2000 et utilisation dans une applica...

http://barlatier.developpez.com/csharp/procedurestockee/cours/

Cration d'une procdure stocke


Pour crire dboguer et excuter des procdures stockes dans une base de donnes SQL Server vous devez utiliser l'analyseur de requtes (Query Analyser). Pour crer une nouvelle procdure, entrez sa dfinition dans le panneau Query puis pressez sur les touches Ctrl+E pour excuter sa dfinition. Attention comprenez bien que cette action ne va que rattacher la procdure la base de donnes mais ne va pas en fait excuter la procdure stocke mme ! Pour excuter une procdure stocke vous devez lancer l'instruction suivante : EXECUTE. Pour crer une nouvelle procdure stocke et la rattacher la base de donnes en cours vous devez utiliser l'instruction CREATE PROCEDURE. La syntaxe gnrale de l'instruction est la suivante :
Instruction CREATE PROCEDURE : CREATE PROCEDURE procedure_name AS { procedure definition }

O procedure_name est le nom de la nouvelle procdure stocke et le bloc d'instructions qui suit le mot cl AS est le corps de la procdure. Je vais vous donner un exemple tout bte de cration de procdure stocke. Ma procdure stocke nomme OrdersByDate va permettre de slectionner les commandes effectues entre deux dates tout simplement. Ma procdure stocke va prendre en entre deux paramtres, lesquelles ? Les dates bien entendu ! Voyons comment cela se prsente :
OrdersByDate : USE NORTHWIND IF EXISTS (SELECT name FROM sysobjects WHERE name = 'OrdersByDate') DROP PROCEDURE OrdersByDate GO CREATE PROCEDURE OrdersByDate @StartDate datetime, @EndDate datetime AS SELECT * FROM Orders WHERE OrderDate BETWEEN @StartDate AND @EndDate

Vous allez me dire c'est quoi ce charabia ? Pas de panique c'est simple. La premire instruction T-SQL
Instruction USE : USE NORTHWIND

Elle permet de prciser la base de donne laquelle va se rattacher la procdure stocke que l'on va crer. Ici on choisit la clbre base de donnes Northwind contenue dans SQL Server. Une fois que la base de donnes est bien claire dans notre tte, on va tester l'existence de la procdure stocke, et oui il est possible qu'une procdure stocke avec le mme nom soit rattache la base de donnes Northwind. On utilise le mot cl EXISTS pour voir si la procdure stocke est dans la table systme sysobjects qui liste tous les objets de la base de donnes. Rappelez vous qu'une procdure stocke rattache une base de donnes est considre comme un objet.
Instruction IF EXISTS : IF EXISTS (SELECT name FROM sysobjects WHERE name = 'OrdersByDate')

Si cette condition est vraie (Exists renvoie true) alors on laisse tomber la cration de la procdure stocke, on ne fait rien. On fait donc un drop Procedure (laisser tomber la procdure) suivi du nom de la procdure et on sort.
Instruction DROP : DROP PROCEDURE OrdersByDate

Si cette condition est fause, alors on pousuit la cration de la procdure stocke partir de l'instruction GO. GO permet de sparer les diffrentes parties de la cration de la procdure stocke.
Instruction GO : GO CREATE PROCEDURE OrdersByDate @StartDate datetime, @EndDate datetime AS SELECT * FROM Orders WHERE OrderDate BETWEEN @StartDate and @EndDate

On fait appel l'instruction CREATE PROCEDURE pour crer une procdure stocke suivie de son nom OrdersByDate, ensuite on peut prciser les paramtres (cela n'est pas obligatoire on peut crer des procdures stockes sans paramtres). Ces paramtres sont des paramtres d'entre par dfaut (l'utilisateur doit fournir leurs valeurs), les paramtres peuvent tre aussi en sortie (on renvoie une valeur), ou mme d'entre et de sortie. On prcise donc les paramtres en donnant leur nom avec le symbole @ pour dire SQL Server qu'il s'agit d'un paramtre (ou plus gnralement d'une variable locale) et non d'un mot cl. On prcise ensuite le type du paramtre, il doit s'agir d'un type valide dans SQL Server. Dans notre cas nous avons besoin des dates : datetime. Les paramtres d'une procdure stocke sont spars par des virgules. Exemple gnral : @nom1 type1, @nom2 type2 Dans notre exemple on a des dates de dbut et de fin : StartDate datetime, @EndDate datetime

2 sur 8

05/10/2009 22:37

Procdure Stocke sous SQL Server 2000 et utilisation dans une applica...

http://barlatier.developpez.com/csharp/procedurestockee/cours/

Ensuite on utilise le mot cl AS pour prciser le dbut du corps de la procdure stocke. Le corps de la procdure stocke est une slection de lignes de la table Orders (commandes) dont la date de commande (OrderDate) est comprise entre une date de dbut et de fin. Les intervalles des dates sont prciss par les paramtres d'entre.
Instruction AS : SELECT * FROM Orders WHERE OrderDate BETWEEN @StartDate AND @EndDate

Lancez cet ensemble d'instructions avec Ctrl+E, vous verrez le succs de l'excution avec le message : "The command(s) completed successfully." La commande s'est termine avec succs. Si vous relancez cette commande, l'instruction DROP PROCEDURE sera excute. Vous pouvez vrifier avec la commande PRINT :
Instruction PRINT : USE NORTHWIND IF EXISTS (SELECT name FROM sysobjects WHERE name = 'OrdersByDate') PRINT 'Dj fait' GO CREATE PROCEDURE OrdersByDate @StartDate datetime, @EndDate datetime AS SELECT * FROM Orders WHERE OrderDate BETWEEN @StartDate AND @EndDate

Le message suivant s'affichera : "Dj fait" Voil Flicitations vous avez cr facilement une nouvelle procdure stocke ! Vous pouvez la voir dans la liste des procdures stockes de la base de donnes Northwind. Passez la suite pour voir la liste des procdures stockes :

Et le code gnr pour cette procdure stocke OrdersByDate est le suivant :


Code gnr SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO ALTER PROCEDURE OrdersByDate @StartDate datetime, @EndDate datetime AS SELECT * FROM Orders WHERE OrderDate BETWEEN @StartDate AND @EndDate GO SET QUOTED_IDENTIFIER OFF

3 sur 8

05/10/2009 22:37

Procdure Stocke sous SQL Server 2000 et utilisation dans une applica...

http://barlatier.developpez.com/csharp/procedurestockee/cours/

GO SET ANSI_NULLS ON

Ce code possde l'instruction ALTER PROCEDURE, cela signifie que si vous changez le corps de la procdure stocke et que vous excutiez cette commande, la procdure stocke serait altre, modifie. Vous pouvez donc changer la logique de la procdure stocke tout moment sans changer le code de l'application client condition que l'interface reste la mme (on garde les mmes paramtres). OUF ! C'est termin pour cette petite introduction sur SQL Server et ses procdures stockes, nous allons maintenant nous tourner vers notre environnement prfr le DOTNET avec Windows Forms et le langage C# (Csharp). Nous verrons comment utiliser cette procdure stocke partir d'une application Windows crite en C#. Mais avant testons notre procdure stocke directement sur SQL Server 2000 avant de l'utiliser dans DOTNET.

Test de la procdure stocke sous SQL Server 2000


Nous allons prsent tester notre procdure stocke avec le SQL Query Analyzer. Pour tester cette procdure OrdersByDate, vous devez d'abord l'attacher la base de donnes Northwind. Slectionnez Northwind dans la liste droulante des bases de donnes :

Si vous ne slectionnez pas la bonne base de donne vous verrez le message d'erreur suivant aprs avoir test la procdure stocke :

Pour tester la procdure stocke OrdersByDate tapez le code suivant :


Test la procdure stocke : DECLARE @StartDate datetime DECLARE @EndDate datetime SET @StartDate='1/1/1997' SET @EndDate='1/20/1997' EXECUTE OrdersByDate @StartDate,@EndDate

Vous dclarez deux variables qui seront passes en paramtres d'entre de votre procdure stocke savoir la date de dbut et de fin. On dclare donc ces deux variables avec le mot cl DECLARE, utilisez le symbole @ en prfix pour le nom de chaque variable puis terminez l'instruction en prcisant le type de donne (datetime). Initialisez les variables avec des valeurs l'aide du mot cl SET (les dates doivent sur mon SQL server avoir le format amricain) . L'idal est de passer les dates en format universel. N'oubliez pas d'encadrer les valeurs pas des quotes ! Prcisez que vous voulez maintenant lancer l'excution de la procdure stocke avec le mot cl EXECUTE, suivi du nom de la procdure stocke, suivi des variables qui seront utilises comme paramtres de la procdure stocke, ces variables (date de dbut et de fin) seront spares par des virgules. Une fois tap le code, lancer l'excution pour tester vous verrez le rsultat suivant (pour mes dates) :

On ne voit qu'une partie du rsultat. Si je ne veux que les commandes du 1er janvier 1997 par exemple

4 sur 8

05/10/2009 22:37

Procdure Stocke sous SQL Server 2000 et utilisation dans une applica...

http://barlatier.developpez.com/csharp/procedurestockee/cours/

On n'obtient alors que deux commandes pour ma table de donnes. Vous pouvez galement tester votre procdure stocke sans la moindre ligne de code ! Allez dans la liste de procdures stockes de la base de donnes Northwind, slectionnez la procdure stocke OrdersByDate avec le bouton droit et slectionner Open (ouvrir) :

Vous verrez la fentre suivante :

Cette fentre vous permet de tester votre procdure stocke en l'excutant. Entrer la valeur du premier paramtre @StartDate dans le champs de saisie "Value :" Faites de mme en slectionnant le deuxime paramtre @EndDate. Puis lancez l'excution avec le bouton Execute ! Valeurs manquantes ! Server: Msg 201, Level 16, State 3, Procedure OrdersByDate, Line 0 Procedure 'OrdersByDate' expects parameter '@EndDate', which was not supplied. Stored Procedure: Northwind.dbo.OrdersByDate Mauvais format ! Server: Msg 241, Level 16, State 1, Line 4 Syntax error converting datetime from character string. Si vous excutez sans prciser les valeurs des paramtres un message d'erreur sera affich. Si vous prcisez bien les dates dans le bon format vous verrez le rsultat suivant :

Le code est automatiquement gnr, plus complexe mais le rsultat est similaire celui obtenu auparavant. Notre procdure stocke fonctionne bien. Maintenant il faut l'utiliser dans notre application!

2. Utilisation de la procdure stocke dans une application Windows Forms avec C#


Pour tester notre procdure stocke dans une application Windows Forms C# je vais rester simple, un bouton et un datagrid suffisent. Double-cliquez sur le bouton pour gnrer le code qui sera le gestionnaire de l'vnement Click du

5 sur 8

05/10/2009 22:37

Procdure Stocke sous SQL Server 2000 et utilisation dans une applica...

http://barlatier.developpez.com/csharp/procedurestockee/cours/

bouton. Dans ce gestionnaire d'vnement je vais vous montrer le code ncessaire pour tester la procdure stocke. Le code complet C# pour pouvoir utiliser notre procdure stocke OrdersByDate est le suivant :
Le code complet : using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Data.SqlClient; private void button1_Click(object sender, System.EventArgs e) { SqlConnection con= new SqlConnection("Data Source=NICOLAS;" + "Initial Catalog=Northwind;Integrated Security=SSPI"); try { SqlCommand com= new SqlCommand("OrdersByDate",con); com.CommandType=CommandType.StoredProcedure; com.Parameters.Add("@StartDate",SqlDbType.DateTime).Value= new DateTime(1997,1,1); com.Parameters.Add("@EndDate",SqlDbType.DateTime).Value= new DateTime(1997,1,1); SqlDataAdapter DA= new SqlDataAdapter(com); DataSet dt=new DataSet("Orders"); DA.Fill(dt,"OrdersByDate"); dataGrid1.SetDataBinding(dt,"OrdersByDate"); } catch(Exception ex) { MessageBox.Show(this,ex.Message,"Erreur",MessageBoxButtons.OK); } }

Mon but est de vous donner le code minimal pour tester la procdure stocke, il ne s'agit pas d'un code c# solide ou robuste. Si vous voyez des amliorations faire, envoyez un email legrandnico@yahoo.com je prendrais toute remarque en considration ! Pour pouvoir utiliser une procdure stocke, j'ai besoin de me connecter au systme de gestion de base de donne relationnelle MS SQL Server 2000 (ou version 7). Pour cela il me faut un fournisseur (provider) de donne, je vais utiliser le provider .NET pour SQL-Server, car il donne des meilleurs performances que OLE DB. Il faut indiquer l'application notre intention d'utiliser ce fournisseur de donne SQL avec la directive using System.Data.SqlClient. On utilise donc l'application client qui va travailler avec le serveur contenant la base de donnes Northwind. Les types utiliss par ce fournisseur seront : SqlConnection, SqlCommand, SqlDataAdapter. De plus j'ai besoin de travailler avec les types de donnes appartenant l'architecture dconnecte d'ADO.NET en utilisant la directive using System.Data ; On utilisera seulement le type DataSet qui est une reprsentation en mmoire du rsultat de notre procdure stocke ! On a donc les deux directives :
Namespaces utiliser : using System.Data; using System.Data.SqlClient;

Ensuite dans le code du gestionnaire de l'vnement Click du composant Button, on commence par crer un objet du type SqlConnection qui va reprsenter la connexion active vers la base de donne Northwind. En paramtre on fait passer la chane de connexion (Connection String). Dans cette chane de connection on prcise tous les paramtres permettant cette connection, on a donc un ensemble de paires Nom/Valeur spares par des point virgules.

1. DataSource : prcise le nom du serveur SQL Server (je sais le nom est mal choisi pour DataSource, je pensais que c'tait la base de donne) 2. Initial Catalog : prcise la base de donne : Northwind 3. Integrated Security : prcise qu'on utilise la scurit intgre du Systme Windows. Si vous voulez plus d'informations sur le Connection String je vous conseille d'aller sur le site : http://www.connectionstrings.com/ qui est trs pratique car il vous guide comment tablir votre chaine de connexion. Il est par contre en anglais seulement. Une fois l'objet Connection cr, on va crer l'objet commande qui va utiliser la procdure stocke. Pour crer un objet SqlCommand vous prcisez en paramtre le nom de la procdure stocke "OrdersByDate" faites attention aux fautes d'orthographe sur le nom ! On prcise en deuxime paramtre quel objet connection cet objet command va utiliser. Ensuite on va prciser le type de la commande. Effectivement par dfaut, le type est un texte reprsentant une requte SQL ! Donc il faut prciser que le premier paramtre du constructeur du SqlCommand n'est pas du texte pour une requte SQL mais un nom d'une procdure stocke !
Type de commande :

6 sur 8

05/10/2009 22:37

Procdure Stocke sous SQL Server 2000 et utilisation dans une applica...

http://barlatier.developpez.com/csharp/procedurestockee/cours/

SqlCommand com= new SqlCommand("OrdersByDate",con); com.CommandType=CommandType.StoredProcedure;

Ainsi on n'aura aucune erreur. Remarquez que j'ai encadr toutes les instructions risque entre les instructions Try et Catch pour attraper les exceptions (par exemple une mauvaise connexion, ou un procdure stocke non reconnue etc.). Ensuite avant d'appeler la procdure stocke, il s'agit de prciser les valeurs des paramtres en entre: la date de dbut et de fin. On va accder la collection des objets SqlParameter de l'objet SqlCommand l'aide de sa proprit Parameters et on ajoute un nouvel objet Parameter la collection l'aide de la mthode Add() de la collection d'objets SqlParameter. En paramtre vous passez le nom du paramtre (attention ce nom doit tre le mme que celui correspondant dans la procdure stocke : @StartDate doit tre @StartDate et pas un autre nom sinon cela plante, peu importe l'ordre des ajouts, c'est le nom qui compte !), vous prcisez ensuite le type du paramtre (un type de SQL serveur : SqlDbType.DateTime). Une fois la mthode Add() appele, elle renvoie un objet SqlParameter, vous pouvez directement faire appel la proprit Value pour initialiser la valeur de cet objet SqlParameter :
Mthode Add : com.Parameters.Add("@StartDate",SqlDbType.DateTime).Value = new DateTime(1997,1,1); com.Parameters.Add("@EndDate",SqlDbType.DateTime).Value = new DateTime(1997,1,1);

On donne comme valeur aux paramtre des objets DateTime. Je prcise des valeurs statiques pour simplifier le code du test de la procdure stocke. Il faudrait en fait rcuprer la valeur de la date donne en format franais par l'utilisateur, convertir cette date en format universel et obtenir l'objet DateTime correspondant. On pourrait dans ce but crer une fonction helper. Maintenant que les paramtres sont prciss et initialiss, nous construisons un objet sqlDataAdapter partir de l'objet SqlCommand. L'objet sqlDataAdapter reprsente le lien entre la couche connecte d'ADO.NET (connection, data adapter, data command, data reader etc) et la couche dconnecte d'ADO.NET (Dataset, DataTable, DataRow, DataColumn etc.). On construit l'objet data adapter en utilisant l'un de ses constructeurs surchargs. On fait passer au constructeur du SqlDataAdapter l'objet SqlCommand :
sqlDataAdapter SqlDataAdapter DA= new SqlDataAdapter(com);

Une fois que le data adapter est en place, construisons un objet DataSet en prcisant le nom de ce groupe de donnes dconnect. Je l'appellerai "Orders". Le DataSet est pour l'instant totalement vide. Dans un DataSet il y a plusieurs collections : une collection de DataTable (DataTableCollection), une collection de DataRelation (DataRelationCollection) et une collection de Proprits du DataSet (PropertyCollection). Dans notre cas, on n'a pas besoin de construire manuellement la structure interne du DataSet, on peut simplement demander au SqlDataAdapter de remplir (peupler) le DataSet en appelant sa mthode Fill(). La mthode Fill() est trs puissante, elle permet de lancer la connexion la base de donne, d'excuter la commande de l'objet SqlCommand (ici c'est la procdure stocke), d'utiliser la structure et les donnes du rsultat de l'excution de la procdure stocke, et enfin de fermer la connexion active la fin. Fill() prends deux paramtres, elle prends un premier paramtre l'objet DataSet dt qui doit tre peupl, en deuxime paramtre on a donn un nom au DataTable qui va tre gnr. Ce DataTable aura la structure ou le schma du rsultat de notre procdure stocke "OrdersByDate". Une fois l'excution de la mthode Fill() acheve on obtient un DataSet ne contenant qu'un seul DataTable avec ses donnes. Le DataTable est l'objet qui reprsente la table nomme "OrdersByDate" contenue dans le DataSet nomm "Orders" reprsent par l'objet DataSet nomm dt. Un schma pour mieux comprendre ce charabia serait :

Une fois le DataSet peupl, vous voulez observer l'ensemble de donnes sur votre application. Pour cela il suffit de faire la liaison de donne entre votre composant grille de donne DataGrid de votre application et le DataSet. Pour cela plusieurs possibilits existent, une possibilit trs simple est d'utiliser la mthode SetDataBinding du composant DataGrid, cette mthode prends deux paramtres, le premier prends le DataSet vers lequel le composant effectuera sa liaison de donne, le deuxime paramtre reprsente le nom du DataTable contenu dans ce DataSet ici il s'agit de "OrdersByData" la seule table de notre DataSet.
Data binding : dataGrid1.SetDataBinding(dt,"OrdersByDate");

Aprs l'excution de cette mthode le DataGrid affichera l'ensemble des rsultats de notre procdure stocke :

7 sur 8

05/10/2009 22:37

Procdure Stocke sous SQL Server 2000 et utilisation dans une applica...

http://barlatier.developpez.com/csharp/procedurestockee/cours/

Un fait intressant est que les dates sont affiches automatiquement au format local de la machine ! Le format francais dans mon cas !

3. Conclusion
Grce cet article vous devez savoir maintenant comment crer n'importe quelle procdure stocke dans votre base de donne SQL Server avec ou non des paramtres en entre. Vous devez savoir maintenant quelles tapes vous devez suivre pour excuter des procdures stockes dans vos applications DOTNET (Windows Form, ASP.NET ou autre). Tout commentaire est la bienvenue ! Si vous remarquez une erreur de ma part, n'hsitez pas me le dire par email legrandnico@yahoo.com De mme que toute amlioration de l'article ou du code utilis est la bienvenue. Toute modification entranera une nouvelle version de l'article comme dans nos applications :-) Je remercie Ronald pour son aide prcieuse pour mes premiers pas. Je remercie loufab pour la relecture et ses suggestions.

4. Rfrences
Utiliser ADO.NET

Copyright 2005 Nicolas Barlatier. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts. Cette page est dpose la SACD.

Responsable bnvole de la rubrique Microsoft DotNET : Jrme Lambert - Contacter par email Vos questions techniques : forum d'entraide Microsoft DotNET - Publiez vos articles, tutoriels et cours et rejoignez-nous dans l'quipe de rdaction du club d'entraide des dveloppeurs francophones Nous contacter - Hbergement - Participez - Copyright 2000-2009 www.developpez.com - Legal informations.

8 sur 8

05/10/2009 22:37

Das könnte Ihnen auch gefallen