IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Transformation datetime pour requete sql


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut Transformation datetime pour requete sql
    Bonjour

    Pour introduire une date dans une requete SQL, j'ai pris l'habitude de formater mon dateTime à la main, j'ai meme une petite methode pour cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private string SqlDate(DateTime dtFrom)
    {
    return string.Format("{0}{1:00}{2:00}", dtFrom.Year, dtFrom.Month, dtFrom.Day);
    }
    Est le plus simple ?
    Ne me parlez pas de requete parametrées
    Car là ce n'est plus simple du tout en plus le code devient completement hermetique, illisible et si je me souviens bien totalement dépendant du connecteur utilisé
    J'attends donc la prochaine révolution avant de jouer a faire des requetes parametrées !

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    j'ai meme une petite methode pour cela ...
    Il y a encore plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return dtFrom.ToString("yyyyMMdd");
    Ne me parlez pas de requêtes paramétrées. Car là ce n'est plus simple du tout en plus le code devient complètement hermétique, illisible et si je me souviens bien totalement dépendant du connecteur utilisé
    Ce n'est pas dépendant du "connecteur", si par là tu entends le moteur de base de données ciblé (Oracle, SQL Server, ...). Il existe plusieurs classes pour gérer les paramètres en fonction de ça, cf. la hiérarchie d'héritage en bas de cette page. Après il faut créer les paramètres suivant les besoins.

    Pour ce qui est du hermétique, je ne vois pas bien ce que tu veux dire. Et au contraire de rendre le code illisible, ça le rend plus simple à lire je trouve, question d'habitude probablement.

  3. #3
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci Sormimon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return dtFrom.ToString("yyyyMMdd");
    Je ne l'oublierai plus celle là

    Ce vais essayer d'integrer ces bingz de formattage dans mes habitudes meme si je continue a penser que ca fait partie des docs mal ecrites de MSDN

    Pour ce qui est des requetes parametrées je laisse les malheureux concernés se debattre dans les forum, j'ai rarement vu un sujet qui suscite plus d'emoi chez ceux que ca concerne. En tout cas, moi, je trouve qu'une syntaxe du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BaseSel="Select a,b,c from table where date<={0} and machin={2} order by {3}";
     
    Sel=string.Format(BaseSel,x,y,z);
    Est beaucoup plus limpide et portable que n'importe quel parametrage que j'ai déja croisé et tant pis pour l'injection sql, on n'a qu'a mettre les barrieres ailleurs !

    Et ce que je voulais dire c'est que les adressage d'items style "@id" semblent dépendre du connecteur DB MySql != SqlServer etc ..

  4. #4
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Le préfixe des paramètres est en effet différent suivant le moteur ciblé. @ pour SQL Server, : pour Oracle et ? pour MySQL.

    Il faut donc créer la requête en fonction du moteur, ou au pire mettre un caractère bidon devant le nom des paramètres et le remplacer avec le bon caractère suivant le moteur de base de données ciblé.

  5. #5
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    Sincerement : tu ne trouve pas qu'un petit string.format comme je le fais pour generer un string sql c'est pas plus souple a manipuler

    Qu'est ce qu'on gagne dans l'etat actuel des chose a faire une requete parametrée sinon se casser les dents 3 fois sur quatre

    Mais bon je suis toujours ouvert a comprendre que je me trompe !

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Personnellement, j'y gagne :
    - à ne pas me soucier du format des dates, je passe un DateTime et le paramètre se débrouille pour le reste
    - à ne pas chercher à doubler les apostrophes dans les chaînes
    - ne pas me prendre la tête avec des formatages inutiles
    - évite l'injection SQL, car parfois on est concerné par ça aussi

    D'un autre côté je me suis forcé à faire avec il y a quelques années, ça joue aussi je pense. Mais c'est sûr que si tu pars sur une application capable de gérer plusieurs moteurs de base de données c'est plus chiant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Besoin aide pour Requete SQL
    Par mystik11 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/07/2006, 11h34
  2. Avoir deux variables constantes pour requétes sql
    Par Talies dans le forum Requêtes et SQL.
    Réponses: 18
    Dernier message: 13/06/2006, 15h17
  3. Donnee excel pour requete sql dans fichier txt ou doc
    Par Yogi_01 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/04/2006, 10h04
  4. [OGS ?] Demande d'aide pour requete SQL
    Par hamtary dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/03/2006, 12h58
  5. Aide Pour Requete SQL Simple ... Merci d'avance :)
    Par thefutureisnow dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/12/2005, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo