La cloche.

Il y a ceux qui ont lu cette nouvelle devant vous.
Abonnez-vous pour recevoir des articles frais.
E-mail
Nom
Nom de famille
Comment voulez-vous lire la cloche
Sans spam

Exemple de création d'une base de données locale Microsoft SQL. Serveur B.MME. Visual Studio.

Cette rubrique montre la solution de la tâche de créer une base de données de type serveur SQL Utilisation de MS Visual Studio. Les questions suivantes sont considérées:

  • utilisation de la fenêtre Server Explorer dans MS Visual Studio;
  • créer une base de données locale de type de base de données SQL Server;
  • créer des tables dans la base de données;
  • éditer des structures de table;
  • lier les tables de base de données entre elles;
  • faire des données dans les tables MS Visual Studio.

La tâche

Utilisation de MS Visual Studio pour créer une base de données MS SQL Server Type Server nommée Education. La base de données contient deux tables d'élève et de session. Les tables entre elles sont reliées par une pince.

La structure de la première table "étudiant".

Structure de la deuxième table "Session".

Performance

1. Téléchargez MS Visual Studio.

2. activerla fenêtre Explorateur de serveur.

Microsoft propose un serveur de base de données Microsoft SQL Server léger pour travailler avec des bases de données. Exister différentes versions Microsoft SQL Server, par exemple: Microsoft SQL Server 2005, Microsoft SQL Server 2008, Microsoft SQL Server 2014 et autres versions.

Vous pouvez télécharger ces versions à partir du site Web de Microsoft www.msdn.com.

Ce serveur est idéal pour travailler avec des bases de données. C'est gratuit et dispose d'une interface graphique pour créer et administrer des bases de données à l'aide de l'outil SQL Server Management.

Tout d'abord, avant de créer une base de données, vous devez activer l'utilitaire Server Explorer. Pour cela, dans MS Visual Studio, vous devez appeler (Fig. 1)

Vue -\u003e Explorateur de serveurs

Figure. une. Serveur d'appel Explorateur.

Après appel, la fenêtre Server Explorer aura une vue approximative, comme illustré à la figure 2.

Figure. 2. Fenêtre Explorateur de serveur

3. Créer une base de données «éducation».

Pour créer une nouvelle base de données basée sur le fournisseur de données Microsoft SQL Server, vous devez cliquer sur le nœud de connexions de données, puis choisir " Créer une nouvelle base de données SQL Server ..."(Fig. 3).

Figure. 3. Appeler la commande de création de la base de données SQL Server

En conséquence, la fenêtre s'ouvre Créer une nouvelle base de données SQL Server"(Fig. 4).

Dans la fenêtre (dans le champ Nom du serveur) indique le nom serveur localinstallé sur votre ordinateur. Dans notre cas, c'est le nom "sqlexpress".

Le champ "Nouveau nom de base de données:" indique le nom créé par base Les données. Dans notre cas, c'est le nom de l'éducation.

L'option Utiliser Windows Windows Aindre doit être laissée inchangée et appuyez sur le bouton OK.

Figure. 4. Création nouvelle base SQL Server 2008 Express Data avec Mme Visual Studio 2010

Une fois les actions effectuées, la fenêtre Server Explorer prend la vue, comme illustré à la figure 5. Comme on peut le voir à la figure 5, la base de données Education est ajoutée à la liste des bases de données existantes.

sasha-pc \\ sqlexpress.education.ddbo

Figure. 5. Fenêtre de serveur Explorer après avoir ajouté la base de données d'éducation

4. Objets de base de données d'éducation.

Si vous déployez la base de données d'éducation ("+" signe), vous pouvez voir une liste des objets principaux suivants:

  • Diagrammes de base de données - Graphiques de base de données. Les graphiques montrent des liens entre les tables de base de données, les relations entre les champs de différentes tables, etc.
  • Tables - Tables dans lesquelles les données de la base de données sont placées;
  • Vues - Présentations. La différence entre les vues et les tableaux est que les tables de base de données contiennent des données et les représentations de données ne les contiennent pas, et le contenu est sélectionné parmi les autres tables ou représentations;
  • Procédures stockées - Procédures stockées. Ils représentent un groupe d'opérateurs connexes sur langue SQLCe qui fournit une flexibilité supplémentaire lorsque vous travaillez avec la base de données.

5. Créer une table étudiante.

Sur le ce moment La base de données d'éducation est absolument vide et ne contient aucun objet (tableaux sauvegardés, vues, etc.).

Pour créer une table, vous devez appeler le menu contextuel (cliquez sur clic-droit Mouses) et sélectionnez la commande "Ajouter une nouvelle table" (Figure 6).

Figure. 6. Une commande d'ajout d'une nouvelle table

Il existe une autre option pour ajouter une table de base de données à l'aide des commandes de menu Data:

Données -\u003e Ajouter une nouvelle -\u003e Table

Figure. 7. Alternative à ajouter une nouvelle table

En conséquence, la fenêtre ADD Table sera ouverte, qui contient trois colonnes (Figure 8). Dans la première colonne "Nom de la colonne", vous devez entrer le nom du champ correspondant de la table de base de données. Dans la deuxième colonne "Type de données", vous devez entrer le type de données de ce champ. Dans la troisième colonne "Autoriser les nulls" indique l'option sur l'absence de données sur le terrain.

Figure. 8. Fenêtre Créer une nouvelle table

Utilisation de l'éditeur de table, vous devez former la table des étudiants comme illustré à la figure 9. Le nom de la table doit être défini lorsqu'il est fermé.

Dans l'éditeur de table, vous pouvez définir les propriétés de champ dans la fenêtre Propriétés de la colonne. Afin de définir la longueur de la chaîne (NVChar) dans les caractères de la fenêtre Propriétés de la colonne, il existe une propriété de longueur. Par défaut, les valeurs de cette propriété sont 10.

Figure. 9. Étudiant de table.

L'étape suivante doit définir le champ clé. Ceci est fait en appelant la commande "Définir la clé primaire" de menu contextuel Num_book champs. L'utilisation des champs de clé sera installé la communication entre les tables. Dans notre cas, le champ clé est le numéro du carnet de tests.

Figure. 10. Réglage du champ de clé

Après avoir installé la clé primaire, la fenêtre de table sera considérée comme décrite dans la figure 11.

Figure. 11. Étudiant de table après la formation finale

Maintenant, vous pouvez fermer la table. Dans la fenêtre Enregistrer, vous devez spécifier son nom - Étudiant (Fig. 12).

Figure. 12. Entrez le nom de la table des étudiants

6. Création d'une table de session.

L'échantillon étudiant crée une session de table est créé.

La figure 13 montre la vue du tableau de session après la formation finale. La clé principale (clé principale) est installée dans le champ Num_Book. Le nom de la table spécifie la session.

Figure. 13. Tableau de session

Une fois les actions effectuées, deux tables d'étudiant et de session seront affichées dans la fenêtre Server Explorer.

Ainsi, tout nombre de tables peut être ajouté à la base de données.

7. Édition de la structure de la table.

Il y a des cas lorsque vous devez modifier la structure de la table de base de données.

Afin de modifier la table de base de données dans MS Visual Studio, vous devez d'abord supprimer l'option "Empêcher les changements d'économie qui nécessitent une nouvelle création de table"Comme le montre la figure 14. Sinon, Mme Visual Studio bloquera les modifications apportées au tableau précédemment créé. La fenêtre Options illustrée à la figure 14 est appelée à partir du menu Outils dans une telle séquence:

Outils -\u003e Options -\u003e Outils de base de données -\u003e Designers de table et de base de données

Figure. 14. Option " Éviter d'économiser des changements nécessitant une nouvelle création de table

Après réglage, vous pouvez modifier la structure de la table. Pour ce faire, utilisez la commande "Ouvrir la définition de table" (Figure 15) dans le menu contextuel, qui est appelée pour la table sélectionnée (clic droit de la souris).

Figure. 15. Appeler la commande "Définition de la table ouverte"

En outre, cette commande est située dans le menu DATA:

Données -\u003e Définition de la table ouverte

Le pré-tableau doit être mis en évidence.

8. Établissement des connexions entre les tables.

Conformément à la condition de la tâche, les tables sont connectées entre le champ Num_Book.

Pour créer une connexion entre les tables, vous avez d'abord besoin (Figure 16):

  • sélectionnez l'objet de diagramme de base de données;
  • sélectionnez la commande Ajouter une nouvelle diagramme dans le menu contextuel (ou dans le menu Données).

Figure. 16. Appeler une équipe d'ajouter un nouveau tableau

En conséquence, une fenêtre pour ajouter un nouveau graphique de table Ajouter sera ouverte (Figure 17). Dans cette fenêtre, sélectionnez Séquentiellement deux tables de session et d'étudiant, puis cliquez sur le bouton Ajouter.

Figure. 17. Fenêtre Ajouter des tables à graphique

Figure. 18. Tables Étudiant et session après les ajoutes au diagramme

Pour commencer à définir la relation entre les tables, vous devez cliquer sur le champ Num_Book Student, puis (sans libérer le bouton de la souris) Faites-la glisser sur le champ Num_Book de session.

En conséquence, deux fenêtres s'ouvriront: tables et colonnes (fig. 19) et relation de clé étrangère (Fig. 20), dans laquelle vous devez tout laisser comme il est et confirmez votre choix sur OK.

La fenêtre Tableaux et colonnes définit la relation (fk_session_student) et les noms des tables de parents (étudiants) et d'enfants.

Figure. 19. Fenêtre Tableaux et colonnes

Figure. 20. Fenêtre de propriétés de la relation

Après l'action effectuée, la relation entre les tables sera définie (Figure 21).

Figure. 21. La relation entre les tables étudiant et la session

Sauver le graphique est effectué de la même manière que l'enregistrement de la table. Le nom du diagramme doit être sélectionné à sa discrétion (par exemple, diagramme1).

Après avoir défini le nom du diagramme, la fenêtre Enregistrer s'ouvrira, dans laquelle vous devez confirmer votre choix (Figure 22).

Figure. 22. Confirmation du stockage des changements de tableaux

9. Saisie de données dans la table.

Le système Microsoft Visual Studio vous permet de créer directement des données dans la table de base de données.

Dans notre cas, lors de l'établissement d'une connexion (fig. 19) primaire (table principale) est élu étudiant. Par conséquent, vous avez d'abord besoin de rendre les données dans les cellules de cette table particulière. Si vous essayez d'abord d'activer les données sur la table de session, le système bloquera une telle entrée avec la sortie du message correspondant.

Pour appeler le mode de saisie de données à la table des étudiants, vous devez appeler la commande Afficher la table Données dans le menu contextuel (cliquez sur Cliquer avec le bouton droit de la souris) ou dans le menu Données (Fig. 23).

Figure. 23. Équipe de données de la table

Une fenêtre s'ouvrira dans laquelle vous souhaitez entrer des données d'entrée (Fig. 24).

Figure. 24. Saisie de données dans la table des étudiants

Après avoir effectué des données à la table des étudiants, vous devez effectuer des données dans la table de session.

Lorsque vous effectuez des données dans le champ Num_Book, la table de session doit être entrée exactement les mêmes valeurs entrées dans le champ Num_Book Student (puisque ces champs sont liés les uns aux autres).

Par exemple, si dans le champ Num_Book, les tables d'étudiant sont entrées des valeurs “101”, “102”, “103” (Voir Fig. 24), vous devez entrer ces valeurs dans le champ Num_Book de session. Si vous essayez d'entrer une valeur différente, le système relâchera à peu près à la fenêtre suivante (Fig. 25).

Figure. 25. Tableaux d'erreur d'erreur de saisie des données Étudiant et session

La table de session avec les données saisies est illustrée à la figure 26.

Dans la fenêtre Server Explorer, qui présente les tables de base de données du serveur Microsoft SQL sous la forme d'un arbre (voir fig. 4.1.), Pour chaque table, vous pouvez ouvrir une fenêtre en appuyant sur la touche Afficher la table Data. Cette fenêtre offre la possibilité de modifier les données de la table. Il semble que cette fenêtre d'édition soit approximativement représentée à la Fig. 4.2. Approximativement parce que le volume total ne saisit pas le dessin à l'esprit le grand nombre de colonnes.

      1. Mise en œuvre de l'affichage de la base de données

Affichage d'une base de données (composant DataSet) est requis pour exclure un accès supplémentaire à la base de données et sur le serveur. Il s'agit d'une caractéristique très importante, car s'il existe de nombreux utilisateurs avec la base de données, la charge du serveur peut être assez importante - le nombre de demandes de plusieurs fois plus grandes, ce qui entraînera un ralentissement de l'exécution des demandes.

Par conséquent, aux dépens de DataSet sur l'ordinateur du client, la base de données est affichée avec laquelle elle fonctionne. Une fois la base et le serveur du client sont synchronisés (ou plutôt, les modifications apportées dans la base de données cliente) sont apportées à la base du serveur)

Affiche notre base de données sur MS Visual Studio 2005 comme suit:

Toutes les données numériques ont un type int32, une chaîne de chaîne. Les dimensions des données de chaîne correspondent à celles données dans le modèle physique de la base de données.

Il montre qu'il y a aussi des tableaux de table dans chaque table. Ceci est une sorte de ponts pour la connexion de données et la source de données. Voici des techniques telles que remplissage et getdata ()

Cette méthode est conçue pour remplir la table avec les données souhaitées à partir de la source (fichier de base de données).

    Getdata ()

Conçu pour prendre des données de la table d'affichage.

    1. Mise en œuvre du logiciel

La principale caractéristique de la mise en œuvre du logiciel est le fait que toutes les classes responsables de la modification des tables de base de données sont héritées d'une classe de base, ce qui nous donne une commodité dans des implémentations. Des méthodes de cette classe de base ont été décrites ci-dessus. Les méthodes virtuelles de classe de base doivent être bloquées dans la classe descendante. Toutes ces méthodes vous permettent de modifier les paramètres tels que: le nom de l'en-tête de forme, le remplissage et la sauvegarde de la table de base de données souhaitée (un seul descendant ne fonctionne qu'avec une table, dans le sens de l'édition de données; toutefois, lorsque les données sont affichées. Il est possible d'utiliser plusieurs tables de base de données afin de montrer des données sur la forme conviviale).

      1. Interface de programme

La fenêtre principale est l'application MDI qui possède le menu suivant:

Chacune des tables à modifier la base de données est appelée par l'élément de menu correspondant "Tables".

Le rapport de charge sur les enseignants est également créé en cliquant sur l'élément de menu correspondant "Rapports".

En tant que capacité logicielle supplémentaire, il existe une "console" élément de menu, ce qui vous permet d'exécuter des demandes de base de données SQL saisies par l'utilisateur et de sortir le résultat dans la table (composant de données). Pour cela, bien sûr, il est nécessaire de connaître les noms des tableaux et des champs, et, principalement, il a été créé à des fins de commodité dans la mise en œuvre du logiciel, mais également d'autres utilisateurs «dédiés» peuvent également être utilisés.

Dans cet article, vous découvrirez ce que LINQ est et comment faire des demandes de liste avec elle.

Qu'est-ce que LINQ? Query intégré de la langue (LINQ) - Langue des demandes intégrées, et plus précisément ambiguë projet Microsoft En ajoutant la syntaxe du langage de requête similaire à SQL. Définition spécifique, avec cet outil, vous pouvez simplement créer des demandes aux tableaux et aux listes de données, pas nécessairement à la base de données.

Dans des exemples de Microsoft, un petit article important est négligé. Pour travailler avec un jeu de données, nous devons utiliser la structure DataContext, la définition de laquelle peut être obtenue à l'aide de spmetal.exe pour une liste ou une bibliothèque présente sur le serveur SharePoint. En d'autres termes, nous avons d'abord besoin de déterminer ce type de données, puis de créer une demande du tout recommander d'utiliser un utilitaire spécial pour travailler dans MVS: IMTECH Obtenez l'extension de la définition spémetale.

Pour travailler, nous aurons besoin d'une liste. Nous utilisons une liste simple - "Liste personnalisable"; Le nom est "Appel simple"; Champs par défaut: Numéro, Nom.

Et ainsi, créons une simple (voir la page appropriée), avec laquelle nous observerons le résultat de nos manipulations. Lors de la création d'un projet, choisissez un modèle de confiance isolé, si vous devez travailler avec des listes ou des données d'autres nœuds, vous devez créer un projet pour une ferme.

Ensuite, créez une classe de fichier "Sorture .CS" à l'aide de spmétal.exe ou de plugin pour le studio. Ajoutez un lien à la bibliothèque Microsoft.SharePoint.Linq. Suite des informations détaillées Vous pouvez obtenir sur le site Web MSDN.

Créez une fonctionnalité de rendu et de my_mess. Dans la dernière fonction, nous générerons des données à afficher.

// surcharge la fonction
rendu annulé du void (HTMLTextWriter Writer)
{
base .Rendeur (écrivain);
My_mess (écrivain);
}

// notre fonctionnalité pour travailler avec une liste
public Void My_MESS (Writer HTMLTextWriter)
{
// créer un contexte
DataContext Data \u003d Nouveau DaTactext ("http: // localhost");
// Nous le connectons avec la liste appropriée sur le site à la racine
Entitélist.<Элемент> Simple_Message \u003d data.getlist.<Элемент>("Appel facile");
// Effectuer une demande - Sélectionnez toutes les lignes de la liste "Appel simple"
query var \u003d du message dans Simple_Message
sélectionnez le désordre;
// Affiche toutes les données du résultat de la requête
foreach (var elem en requête)
{
Écrivain.writeline ( "Élément de liste:" + Elem. Nutrition.tostring ());
écrivain.writebreak ();
}

}

Terminez le projet et ajoutez à la page. En conséquence, toutes les lignes sont sur la liste seront affichées.

Suite plus tard (l'article n'est pas terminé) ...

Annotation: Après avoir lu cette conférence, vous pouvez: créer des requêtes à l'aide du concepteur de requêtes SQL Server Management Studio Studio, extrayant des informations sur les tables système de base de données, créez de manière dynamique des demandes simples en fonction de la saisie de l'utilisateur, formatez l'entrée de l'utilisateur et filtrer les demandes dynamiques complexes, effectuer une analyse syntaxique et un reformat. Les données destinées à être utilisées dans le filtre, protègent la base de données des attaques d'attaque de type "SQL-injection", utilisent la procédure SP_Executeql pour envoyer une demande.

Dans la conférence précédente, il a été décrit comment augmenter performance Demandes. Vous savez maintenant comment créer un ensemble de demandes efficace pour fournir aux utilisateurs les informations les plus utiles de votre application à l'aide de requêtes pré-créées dans des procédures ou des vues stockées.

Toutefois, dans toutes les applications, en plus du plus simple, il est impossible d'apprendre tous les types de types d'informations possibles à l'avance que les utilisateurs peuvent être nécessaires et comment ils veulent filtrer et rationaliser. Au lieu d'essayer de fournir toutes les fonctionnalités, vous pouvez fournir à l'utilisateur la gestion des informations rapportées par l'application. Cette conférence indique comment construire de manière dynamique les requêtes en fonction du choix que l'utilisateur effectue pendant l'exécution du cycle de travail.

Interface utilisateur pour les demandes de construction

L'environnement SQL Server Management Studio comprend une interface complexe pour créer des demandes. Étudons cette interface afin que vous ayez une idée de la manière dont vous pouvez créer des requêtes de manière dynamique. Votre application n'aura pas besoin de tous Éléments de contrôlefourni par l'environnement SQL Server Management Studio. En fait, vous devez réfléchir à la meilleure façon de limiter les utilisateurs à choisir.

Créer une demande Utilisation du concepteur de demande SQL Server Management Studio Demander

Supprimer des informations sur les tables de base de données

Pour fournir à l'utilisateur la liste des paramètres, l'application est probablement apprise des informations sur les tables de base de données. Il existe plusieurs façons d'obtenir cette information. Le plus important de ces méthodes est d'utiliser le schéma d'informations_schema. Ce schéma est standard dans n'importe quelle base de données.

Application Information_schema.

Le schéma Information_Schema est un schéma spécial dans chaque base de données. Il contient des définitions de certains objets de base de données.

Information_schema est conforme à la norme ANSI, conçue pour extraire des informations à partir de tout noyau de base de données compatible ANSI. SQL Server Information_schema consiste en un ensemble de représentations qui demandent des tables de base de données SYS * contenant des informations sur la structure de la base de données. La demande à ces tables peut être effectuée directement, de la même manière que toutes les tables de base de données. Cependant, dans la plupart des cas, afin d'extraire des informations des * tables sys, il est préférable d'utiliser les vues de schéma Inform_schema.

Noter. Le schéma d'informations_schema demande parfois des tables qui ne sont pas nécessaires, qui endommagent la productivité. Dans l'exemple suivant de cette conférence, cela n'est pas particulièrement important car l'application s'est déjà attendue par l'utilisateur. Cependant, cela devrait être considéré si la vitesse est un aspect important de votre application.

Voici le code T-SQL de base, utilisé pour obtenir des informations sur les colonnes incluses dans le tableau:

Veuillez noter que vous devez sélectionner le champ Table_Schema pour la table. Cela peut être important de créer des requêtes similaires à l'avenir. Pour expérimenter les méthodes décrites dans cette conférence, créez un nouveau projet dans Visual Studio.

Créer un nouveau projet Visual Studio
  1. Sélectionnez dans le menu Démarrer des commandes de toutes les programmes, Microsoft Visual Studio 2005, Microsoft Visual Studio 2005.
  2. Dans le menu Visual Studio, sélectionnez Fichier, Nouveau, Projet (Fichier, Créer, Project).
  3. Dans le panneau Types de projets, développez le nœud Visual Basic (Solutions Visual Basic) et sélectionnez le modèle de demande dans le panneau Modèles. Donnez le projet de nom de chapitre 7 et cliquez sur OK,
  4. L'application de cet exemple peut être trouvée dans les fichiers des exemples du dossier \\ chapitre 7 \\ dynquery. Vous pouvez couper et insérer du code pour les procédures suivantes à partir du fichier Form1.VB.
Obtention d'une liste de tables et de représentations

En règle générale, vous devrez fournir à l'utilisateur la possibilité de choisir non seulement des colonnes, mais également une table pour demande dynamiquePar conséquent, vous devrez afficher une liste de tables pour l'utilisateur. Information nécessaire Vous pouvez obtenir avec la demande suivante:

Sélectionnez Table_schema, Nom de table, Table_Type de Information_Schema.Tables

En annexe, cette demande peut être utilisée comme suit.

Nous recevons une liste de tables

Le code ci-dessus sur Visual Basic initialise l'objet SQLommand nommé com avec chaîne SQLqui doit être effectué puis exécute l'objet SQLCOMMAND. C'est le moyen le plus simple d'exécuter l'offre T-SQL de l'application.

En tant qu'exercice, vous pouvez placer les schémas et les tableaux obtenus lors de la mise en œuvre de la procédure de charge de notre formulaire, dans interface utilisateur Applications sous la forme d'une forme afin que l'utilisateur puisse choisir un schéma et une table pour le travail. Par exemple, dans cette conférence, nous supposons que l'utilisateur a choisi le schéma de vente et la table des clients.

Une fois que l'utilisateur a sélectionné la table, vous pouvez supprimer la liste des colonnes de cette table à l'aide de la même méthode à l'aide de l'entrée utilisateur comme nom de table dans la requête. Pour ce faire, entrez le député de la chaîne de requête, puis remplacez cet appel suppléant à String.Format. Dans le code ci-dessous, le substituant de la ligne de requête - (0).

Nous obtenons une liste de colonnes
  1. Ajoutez la procédure de récupération suivante ci-dessous la procédure de retrievishables:

    Sub Retriefecolumns (Nom de Byval en tant que chaîne) MyConnection comme nouvelle SQLCLIENT.SQLConnection (_ "Source de données \u003d \\ sqlexpress;" & _ "Catalogue initial \u003d Aventureworks; fiducies_connection \u003d oui;") DIM SQLSTR \u003d "Sélectionnez Table_Schema, Nom de table , Nom de colonne, "+ _" Ordinal_Position, data_type "+ _" de information_schema.columns "+ _" Où (Table_name \u003d "(0)" "Dim TableColumns comme nouveau DataTable Dim Da comme nouveau SQLCLIENT.SQLDataDapter (_ string.format (SQLSTR, TAMENNAME), MYCONNECTION) DA.FLUT (TAPOOLUMNNS) POUR I EN ETEGER \u003d 0 à TAPECOLUMNS.ROWS.COUNT - 1 avec TableColumns.Rows.Item (i) Console.WRITELINE ("(0) (1) (2) ) ", _ .Item (1), .item (2), .Item (3)) fin avec la prochaine fin

  2. Dans la procédure de formaduc1_load, ajoutez l'appel de procédure de récupération suivant après les procédures de retrievishables:

La cloche.

Il y a ceux qui ont lu cette nouvelle devant vous.
Abonnez-vous pour recevoir des articles frais.
E-mail
Nom
Nom de famille
Comment voulez-vous lire la cloche
Sans spam