babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 novembre 2015
-
5 mai 2008 à 08:55
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
9 mai 2008 à 09:23
Bonjour,
Hypothèse :
- une table TBL_CLIENT : données es clients
- un objet "Client" qui permet (entre autre) de géré un client. Cet objet contient des méthodes et des propriétés (correspondantes aux différentes colonnes de ma table TBL_CLIENT)
Question:
Je voudrais implémenter une méthode "Client.Add" afin d'ajouter un nouveau client dans ma table TBL_CLIENT. Comment dois-je m'y prendre pour passer tous les champs de l'insert :
1° Faire une structure qui sera en paramétre de ma méthode .Add ?
2° Utiliser toutes les propriétés de l'objet "Client" que le programme appelant devra obligatoirement initialiser ?
3° Passer toutes les champs de l'insert un a un en paramétre de ma méthode ".Add" ?
4° Autre chose ?
babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 novembre 2015 5 mai 2008 à 17:21
j'ai du mal m'exprimer. Concerant la requete SQL, pas de souci. J' essaye de respecter la notion des 3 couches. Ma question concerné plus le passage de paramètre à la méthode qui se charge de faire l'insert
Explication dans le "source"
yassinebennani
Messages postés249Date d'inscriptionsamedi 13 octobre 2007StatutMembreDernière intervention 2 mai 2014 5 mai 2008 à 22:37
D'aprés ce que je vois la méthode Add existe à l'intérieur da la classe Client donc ta ps respecté l'architecture 3 couche car là c'est une classe métier qui est client et qui se charge en plus d'accéder à la base de donnée.
En tous cas si la méthode Add existe à l'intérieur de la classe client donc y a aucun besoin de lui passer des paramètres car elle peut les avoir juste en utilisant le mot clé this.
je préfère ps ni la deuxième ni la troisième prk?? et bien par ce que la troisième est plus lourde et la deuxième tu passe par des variables qui n'ont rien avoir avec ton objet Client cela veut dire que tu ajoute dans la table alors que ton objet n'a ps encors d'identité et à toi de voir.
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014100 9 mai 2008 à 00:19
Salut,
"req = "Insert into table_client (id, nom) values(@id,@nom)".Replace("@id",ObjetClient.ID.toString()).Replace("@nom", ObjetClient.Nom.toString());"
Une requête semi paramétrée donc... ce truc est totalement à proscrire.
yassinebennani
Messages postés249Date d'inscriptionsamedi 13 octobre 2007StatutMembreDernière intervention 2 mai 2014 9 mai 2008 à 01:44
pourquoi???
Les fins justifient les moyens_________________________________________________
Yassine BENNANI - Ingénieur en génie logiciel & multimédia (Consultant SI)
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014100 9 mai 2008 à 09:23
Ca ne résoud en rien le problème de formatage (même si probablement iunexistant ici, sauf peut être sur grandes valeurs de ID) et celui de l'injection SQL.
Autant écrire directement
req = String.Format("Insert into table_client (id, nom) values({0},{1})", ObjetClient.ID.ToString(), ObjetClient.Nom.ToString()); // A NE PAS FAIRE