Sauvegarde SQL

cs_kurky Messages postés 111 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 27 avril 2010 - 4 sept. 2006 à 20:03
cs_kurky Messages postés 111 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 27 avril 2010 - 5 sept. 2006 à 09:27
Bonjour,

En fait, je bloque sur un système de sauvegarde qu'il faudrait que je mette au point.
Le soft que je dev gere soit une base SQLServer soit Access et je voudrais alléger les requete au maximum comme sauvegarder uniquement les champs modifiés.

Le but est de faire un système de sauvegarde le plus générique possible et efficace au niveau temps d'exécution.

Mon appli est composé d'à peu pret tous les controls que ce soit textBox combo list datagridview etc.
Pour la datagridview y a aucun probleme. C'est pour tout les autres controls.

Savoir si un champ de type TextBox etc a été modifié est simple mais comment géré ca au niveau de la requete UPDATE.
Pour savoir à quel champ de la table appartient chaque control, j'ai pensé à mettre dans le tag des controls "LATABLE.LECHAMP" pour pouvoir le placer dans la requete plutard du style :

requete = "UPDATE TABLE SET " + textBox.tag + "=" + textBox.Text + "WHERE .....";

Ca aurait très bien marché si seulement mes tables n'étaient composées que de champs texte. Or ce n'est pas le cas et le Type de données vient foutre le bordel dans cette facon de gérer la sauvegarde.

Voila donc si quelqu'un a une petite idée ca serait sympa sachant que le système doit être TRES générique et réutilisable dans plusieurs classe bien sur :)

Merci

4 réponses

cs_kurky Messages postés 111 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 27 avril 2010
4 sept. 2006 à 20:30
Je vais essayer une methode en utilisant un délégué en attendant pour voir si c'est possible ^^
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
4 sept. 2006 à 20:50
Salut,

Regarde aussi du côté des requêtes paramétrées pour remplacer tes concaténations.

/*
coq
MVP Visual C#
CoqBlog
*/
0
cs_kurky Messages postés 111 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 27 avril 2010
4 sept. 2006 à 21:50
Oui ce n'est pas une mauvaise idée mais, pour lister les champs modifiés, comment je peux m'y prendre ? Car il faut récupérer dans tous les cas le type de variables stockées dans la base.
 
Je n'est pas regardé la syntaxe exacte mais meme si lorsque je modifie un textbox, ca me rajoute la commande [mailto:champ=@valeur champ=@valeur] (que je pourrai stocker dans le tag) il faut toujours que je lui passe apres en parametre ET le type de champs ET la valeur qu'il faudra bien entendu 'caster' en la passant et c'est cette info de type que je n'arrive pas à stocker.

J'ai fait un truc qui marche. Mais c'est assez dégueulasse.
Toute mes variables représentant mes champs sont sockées dans un dictionary, lequel possède une clé String qui correspond au champ et en valeur une classe privée qui contient un String pour la TABLE, un Type pour le type de valeur et un Objet qui contient la valeur. Seulement ca cast dans tout les sens, j'ai été obligé de contruire des méthodes pour chaque type (bool, int32, int16, string ....). Enfin ca me plait pas et le temps d'exécution ne doit pas être amélioré.

Qu'en penses-tu?
0
cs_kurky Messages postés 111 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 27 avril 2010
5 sept. 2006 à 09:27
Je vais essayer une autre méthode.

Sinon, au niveau des requetes paramétrées, est ce qu'il est possible d'ajouter un paramètre si la requete n'est pas complète.

Admettons que je fasse une boucle qui ajoute [mailto:champ=@champ champ=@champ] dans une requete, est ce qu'il est possible de mettre donner au même moment le paramètre ?
0
Rejoignez-nous