begin process at 2010 02 10 01:37:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > SIMPLIFIER LES REQUETE SQL

SIMPLIFIER LES REQUETE SQL


 Information sur la source

Note :
2 / 10 - par 2 personnes
2,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Source .NET ( DotNet ) Classé sous :requete, sql, générer Niveau :Débutant Date de création :02/07/2007 Date de mise à jour :02/07/2007 10:50:48 Vu :10 989

Auteur : student_001

Ecrire un message privé
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Je trouve que faire des requete dans le code est très ennuyeux, j'au fait alors un petit code qui permet de faire plus simplement et plus joliement (je trouve des requete sql) avant de les envoyer au SGBD...

Source

  • using System;
  • using System.Collections.Generic;
  • using System.Collections;
  • using System.Text;
  • public class DbAccess : Hashtable
  • {
  • public DbAccess()
  • {
  • Requete rq;
  • // j'ai pris un exemple simpliste
  • #region "Requetes Personne"
  • rq = new Requete("getPersonnes");
  • rq.Valeur = "SELECT * FROM Personne";
  • this.Add(rq.Name, rq);
  • rq = new Requete("addPersonne");
  • rq.Valeur = "INSERT INTO Personne" +
  • "(Nom, Prenom)" +
  • "VALUES " +
  • "(@Nom, @Prenom)";
  • this.Add(rq.Name, rq);
  • rq = new Requete("updPersonne");
  • rq.Valeur = "UPDATE Personne SET " +
  • "Nom = @Nom, " +
  • "Prenom = @Prenom " +
  • "WHERE id = @id";
  • this.Add(rq.Name, rq);
  • rq = new Requete("delPersonne");
  • rq.Valeur = "DELETE FROM Prenom WHERE id = @id";
  • this.Add(rq.Name, rq);
  • #endregion
  • }
  • }
  • public class Requete
  • {
  • #region "Propriété"
  • internal string _Name;
  • public string Name
  • {
  • get { return _Name; }
  • }
  • internal string _Valeur;
  • public string Valeur
  • {
  • get { return _Valeur; }
  • set { _Valeur = value; }
  • }
  • #endregion
  • #region "Constructeurs"
  • public Requete(string name)
  • {
  • this._Name = name;
  • }
  • #endregion
  • #region "Méthodes"
  • public void AddParam(string champ, string valeur)
  • {
  • this._Valeur.Replace(champ, valeur);
  • }
  • public void AddParam(string champ, int valeur)
  • {
  • this._Valeur.Replace(champ, valeur.ToString());
  • }
  • public void AddParam(string champ, double valeur)
  • {
  • this._Valeur.Replace(champ, "'" + valeur.ToString() + "'");
  • }
  • public void AddParam(string champ, DateTime valeur)
  • {
  • string stringDate = valeur.Year.ToString() + "-" & valeur.Month.ToString() & "-" + valeur.Day.ToString() + " " & valeur.Hour.ToString() + ":" & valeur.Minute.ToString() + ":" & valeur.Second.ToString();
  • this._Valeur.Replace(champ, "'" + stringDate + "'");
  • }
  • #endregion
  • }
  • // comment l'utiliser..?
  • //à declarer au tt début du programme
  • DbAccess _LeDbAccess = new DbAccess ()
  • //à utiliser a chaque fois qu'on accede à la base a l'aide d'une requete
  • Requete rq = (Requete)_LeDbAccess["addPersonne"];
  • rq.AddParam("@Nom", leNom );
  • rq.AddParam("@Prenom", lePrenom );
  • //rq.Valeur est notre requete...
  • SqlCommand sql = new SqlCommand(rq.Valeur);
  • ....
using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;

    public class DbAccess : Hashtable
    {
        public DbAccess()
        {
            Requete rq;
            // j'ai pris un exemple simpliste
            #region "Requetes Personne"
            rq = new Requete("getPersonnes");
            rq.Valeur = "SELECT * FROM Personne";
            this.Add(rq.Name, rq);

            rq = new Requete("addPersonne");
            rq.Valeur = "INSERT INTO Personne" +
                        "(Nom, Prenom)" +
                        "VALUES " +
                        "(@Nom, @Prenom)";
            this.Add(rq.Name, rq);


            rq = new Requete("updPersonne");
            rq.Valeur = "UPDATE Personne SET " +
                        "Nom = @Nom, " +
                        "Prenom = @Prenom " +
                        "WHERE id = @id";
            this.Add(rq.Name, rq);

            rq = new Requete("delPersonne");
            rq.Valeur = "DELETE FROM Prenom WHERE id = @id";
            this.Add(rq.Name, rq);
            #endregion
        }
    }
    public class Requete
    {
        #region "Propriété"
        internal string _Name;
        public string Name
        {
            get { return _Name; }
        }
        internal string _Valeur;
        public string Valeur
        {
            get { return _Valeur; }
            set { _Valeur = value; }
        }
        #endregion
        #region "Constructeurs"
        public Requete(string name)
        {
            this._Name = name;
        }
        #endregion
        #region "Méthodes"
        public void AddParam(string champ, string valeur)
        {
            this._Valeur.Replace(champ, valeur);
        }
        public void AddParam(string champ, int valeur)
        {
            this._Valeur.Replace(champ, valeur.ToString());
        }
        public void AddParam(string champ, double valeur)
        {
            this._Valeur.Replace(champ, "'" + valeur.ToString() + "'");
        }
        public void AddParam(string champ, DateTime valeur)
        {
            string stringDate = valeur.Year.ToString() + "-" & valeur.Month.ToString() & "-" + valeur.Day.ToString() + " " & valeur.Hour.ToString() + ":" & valeur.Minute.ToString() + ":" & valeur.Second.ToString();
            this._Valeur.Replace(champ, "'" + stringDate + "'");
        }
        #endregion
    }


// comment l'utiliser..?

//à declarer au tt début du programme
DbAccess _LeDbAccess = new DbAccess ()

//à utiliser a chaque fois qu'on accede à la base a l'aide d'une requete
Requete rq = (Requete)_LeDbAccess["addPersonne"];
rq.AddParam("@Nom", leNom );
rq.AddParam("@Prenom", lePrenom );
//rq.Valeur est notre requete...
SqlCommand sql = new SqlCommand(rq.Valeur);
....

 Conclusion

laissez moi des critiques... Je ferai en sorte de faire mieux...
A+.


 Historique

02 juillet 2007 10:47:23 :
Une petite erreur dans la requete update...
02 juillet 2007 10:50:48 :
Encore une erreue

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) DEMO_XML_BASE_DE_DONNÉES par DanMor498
Source avec Zip Source avec une capture Source .NET (Dotnet) EXPORTER SCRIPT SQL SQL SERVER (CREATE - DROP - INSERT - TAB... par citt
Source avec Zip Source .NET (Dotnet) BULKINSERT EN C# par Malkuth
Source avec Zip Source avec une capture Source .NET (Dotnet) SPLIT SQL SANS TABLE TEMPORAIRE par TheOnlyMaX
Source avec Zip Source .NET (Dotnet) MOTEUR CSV ET RECORDSET PERSO par SwitchApocalyps

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) SPLIT SQL SANS TABLE TEMPORAIRE par TheOnlyMaX
Source avec Zip Source avec une capture Source .NET (Dotnet) GENEREREQUÊTE par donald42
Source avec Zip Source avec une capture Source .NET (Dotnet) REPOSITORY GENERATOR (FOR ENTERPRISE LIBRARY) par romagny13
Source .NET (Dotnet) XML VERS TREENODE / TREENODE VERS XML par ip2x
Source avec Zip Source .NET (Dotnet) STOCKAGE DVD ET LIVRE AVEC BASE DE DONNEES SQL par anthony65

Commentaires et avis

Commentaire de sebmafate le 02/07/2007 11:45:18 administrateur CS

mouaip... ça simplifie le travail du hacker...
NE JAMAIS FAIRE DE REQUETE COMME CECI !
Toujours utiliser les DbParameters.

Enfin, si vraiment tu veux simplifier l'utilisation des requêtes passe plutot par le mapping par attribut ! (http://www.csharpfr.com/codes/MAPPING-ATTRIBUTS-EXEMPLE-UTILISATION_34726.aspx)

Commentaire de Bidou le 02/07/2007 13:09:11 administrateur CS

C'est effectivement pas l'pied...
Ca donne au moins l'exemple de ce qu'il ne faut pas faire !

Commentaire de sebmafate le 02/07/2007 14:15:13 administrateur CS

remarque comme ca :
string stringDate = valeur.Year.ToString() + "-" & valeur.Month.ToString() & "-" + valeur.Day.ToString() + " " & valeur.Hour.ToString() + ":" & valeur.Minute.ToString() + ":" & valeur.Second.ToString();
this._Valeur.Replace(champ, "'" + stringDate + "'");

c'est pas bon en C#... l'opérateur de concaténation de chaine est le + pas le & !

Commentaire de sebmafate le 02/07/2007 15:02:23 administrateur CS

pour illustrer tout ça, voici un mini-tutoriel : http://www.csharpfr.com/tutoriaux/UTILISATION-REQUETES-PARAMETREES-AVEC-ADO-NET_709.aspx

Commentaire de Warny le 02/07/2007 16:29:51

admettons que j'ai une table utilisateurs (login varchar, password varchar, isadmin bit) et une table pleindedonnees

pour selectionner des données de données j'ai la requête :

select * from pleindedonnees
where (maclef = @maclef)

je remplace @maclef par "'" + valeur + "'" valeur
jusque là tout va bien, c'est ce que tu fait.

maintenant dans valeur je met
"'toto') GO insert into utilisateurs ('hacker', 'hacker', true) --"

la requête passée sera :

select * from pleindedonnees
where (maclef = 'toto') GO insert into utilisateurs ('hacker', 'hacker', true) --)

et je n'aurais plus à me connecter à l'application qu'en tant que 'hacker' avec le mot de passe 'hacker'.

Conclusion : suis les recommendation de seb et bidou.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

requete sql avec parametre [ par ced0013 ] Voila mon problème : impossible de faire marcher une requete sql avec des parametres !!j'ai une requete du genre : String cmdStr = "Select Nom from Ma Apostrophes dans une requete SQL [ par jdaviaud ] Dans ma requete sql, je souhaite remplacer les apostrophes par \' pour que la requete puisse etre insérée donc j'ai voulu utiliser la fonction mavaria Remplir une DataRow grace à une requete SQL [ par Sunnyprog ] Sunnyprogfont=GeorgiaBonjour ! J'ai créé un DataSet composé de deux DataTable, dans lequelles se trouvent des DataRows...( en C# et SQL 2000 ).Je voud requete SQL complexe ? [ par Sunnyprog ] Sunnyprogfont=GeorgiaBonjour ! Voilà mon problème, j'ai créé une requete SQL pour me retourner divers champs de deux tables selon un condition, Cela f Problème avec une requete SQL [ par jerome_p ] Bonjour, Voila j'ai un problème avec une requete SQL. Pour expliquer un peu, ma requete est construite par l'application et les paramètres Resultat de requete sql incorrecte [ par Maiku ] Bonjour Je developpe actuellement un logiciel de cuisine en relation avec une base de données acces comportant 4 tables : Famille,Ingredients,Rec dates en sql [ par ratsimisampy ] bonjour, voila, j'ai un souci avec ma requete SQL (je me sert de Access comme BD) sql = "select * from ope1 where DOCNUM IN (select COMMANDE from _ requete SQL dans un programme objet [ par Jojo092 ] Bonjour, j'ai un petit souci. J'aimerais faire une mise à jour d'une base access sur mon programme C#, ms il me met un message d'erreur qui est : Probleme de requete SQL [ par JuGuuL ] Bonjour, Ceci est plus une question SQL que C# mais bon, vu que je le fais en C# !!! J'ai une connexion a une base de donnée Access Quand je f combobox et requete sql [ par kakol ] Rebonjour,j'ai utilise string choix = comboBox1.SelectedText.ToString(); pour selectionner le texte de ma combobox. Ce texte est le nom d'une table de


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales