Sgbd et récupération de données [Résolu]

Signaler
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
-
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
-
Bonsoir à tous,



J'ai une table "personne" sous sql-server avec pleins de champs (numero,nom,prenom,montant etc....)



Et dans mon programme j'ai une classe Personne avec des propriétées (les mêmes en faite) numéro,nom,prenom, montant....



Quel est le meilleur moyen de faire en sorte que les données sous sql
server s'insere parfaitement dans ma classe ? Enfin pour être sur de
connaitre le bon type en faite... Si je fais "Select * from personne
where personne.id = 1" ; je voudrais récuperer ce que je vais
recevoir et créer un nouvel instance de personne avec. A moins qu'il y
ait plus malin à faire je sais pas.



Voila si qq avait une petite idée,



A votre bon coeur.

11 réponses

Messages postés
540
Date d'inscription
dimanche 29 décembre 2002
Statut
Modérateur
Dernière intervention
13 mai 2011

D'abord il faut créer des objets métiers qui ont une interface commune avec des fonctions telles que GetTableName() et SetProperty(string Property,object value)/GetProperty(string Property) pour accéder aux propriété par rapport aux chaine.

SELECT t1.Nom as t1$Nom, t2.Pseudo as t2$Pseudo FROM table1 as t1,table2 as t2 WHERE t1.id = t2.id;

Ensuite, tout est dans la requête. Essaye de voir comment tu pourrais construire une telle requête en passant uniquement des objets en paramètre.
Je ne peux malheureusement pas te donner d'exemple, c'est pas simple à réaliser. Je serais toi, je m'orienterais vers Xml.

Poppyto http://www.poppyto.net LE site pour les bassistes
http://blogs.developpeur.org/Poppyto Mon Blog sur C#
Messages postés
540
Date d'inscription
dimanche 29 décembre 2002
Statut
Modérateur
Dernière intervention
13 mai 2011

Le mieux serait d'utiliser un sgbd objet...
Dans ton cas, tous les choix sont possible : bourrin / sérialisation xml / moteur bourrin.

Perso j'ai opté pour un moteur dans mes projets, mes classes métiers se remplissent toutes seules :).
J'imagine que la sérialization XML doit fonctionner à merveille, reste plus qu'à coder quoi :)

Stef

Poppyto http://www.poppyto.net LE site pour les bassistes
http://blogs.developpeur.org/Poppyto Mon Blog sur C#
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Popytto, il faudrait que tu approfondisses un peu plus les idées que tu viens de donner

Emmanuel9 est pas encore forcément a l'aise avec les sgbd et la facon de faire pour tout cela


Si tu as des liens et des exemples qui expliquent comment procéder, donne les lui


Mx
Messages postés
540
Date d'inscription
dimanche 29 décembre 2002
Statut
Modérateur
Dernière intervention
13 mai 2011

Personnellement, je pense que si c'est pour utiliser une ou deux tables associé aux objets, je pense que le mieux c'est de faire la méthode d'association bourrin sinon tu vas perdre ton temps.

En gros :
- Remplir un dataset ou datatable avec la requête.
- Recupérer chacune des colonne et les associer à l'objet.

C'est bourrin mais ça marche et c'est la méthode la plus rapide quand on n'est pas trop à l'aise en développement.
Je n'ai pas de lien sous la main mais il pourra trouver sur ce site des exemples d'utilisation de Dataset et DataGrid.

Poppyto http://www.poppyto.net LE site pour les bassistes
http://blogs.developpeur.org/Poppyto Mon Blog sur C#
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
merci, et si les clients qui se connecte à la base sont en permanance
connecté au sgbd via le réseau, faut mieux faire comme tu dis avec un
dateset ou bien faire :



SqlDateReader reader = cm.ExecuteReader() ;

while (reader.Read)

{

jean_pierre->set_Nom(reader.get_String(0)) ;

}



enfin une méthode bien moyennageuse. Ce qui m'enbête c'est que à terme
je vais avoir pas mal de table alors j'aimerais une manière sûr de pas
faire d'erreur....
Messages postés
540
Date d'inscription
dimanche 29 décembre 2002
Statut
Modérateur
Dernière intervention
13 mai 2011

Ok donc évite la méthode bourrin si tu vas avoir plein de tables.
Tu peux coder un moteur de récupération de donnée (pas simple mais faisable) où alors tout faire avec la sérialization XML. Si tu n'as pas trop envie de coder, je te conseil la deuxième méthode, il doit y avoir des exemples de sérialization/désérialization XML sur ce site.

Poppyto http://www.poppyto.net LE site pour les bassistes
http://blogs.developpeur.org/Poppyto Mon Blog sur C#
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
Quand tu parles d'un moteur de récuperation de données, c'est quoi en
faite un truc qui recupere les données dans un dataset et qui remplis
des instances de classes en fonctions de ce qu'il a recu ? et pour le
serialisation xml il faut que je recupere un fichier à l'arrivé ? mais
quel fonction avec sqlconnection me permet de recupere un fichier xml
via une requete sql ?
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
est ce c'est pas le rôle de SqlDataAdapter d'adapté les données ?
Messages postés
540
Date d'inscription
dimanche 29 décembre 2002
Statut
Modérateur
Dernière intervention
13 mai 2011

> Quand tu parles d'un moteur de récuperation de données, c'est quoi en faite un truc qui recupere les
> données dans un dataset et qui remplis des instances de classes en fonctions de ce qu'il a recu ?

Oui, mais j'entend bien de manière abstraite, la fonction ne doit connaitre aucun type sinon c'est plus un moteur, c'est du spécifique.


dataSet.GetXml() pour récupérer le résultat d'une requête en XML.
SqlDataAdapter remplit des DataSet ou des DataTable.

Poppyto http://www.poppyto.net LE site pour les bassistes
http://blogs.developpeur.org/Poppyto Mon Blog sur C#
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
mais comment est ce que je peux connaitre le type à l'avance t'aura pas un exemple même succin par hazard ? juste histoire d'avoir une idée en faite....
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
ok, merci de ton aide