begin process at 2012 02 11 04:56:22
  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 :13 320

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 .NET (Dotnet) ENTITY FRAMEWORK - AVOIR UN INCLUDE TYPÉ par jesusonline
Source avec Zip APPLICATION BASE DE DONNÉES par pretude
Source avec Zip Source avec une capture Source .NET (Dotnet) CRÉATION DE CLASSES MÉTIERS À PARTIR D'UNE BASE DE DONNÉES par sebmafate
Source avec Zip Source avec une capture Source .NET (Dotnet) C# SQLCE DEMO par DanMor498
Source avec Zip EXPORTATION DE FICHIER CSV VERS UNE TABLE SQLSERVER par imothepe_33

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) CRYSTALREPORT C# SQLSERVER par badis1996
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 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 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,747 sec (3)

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