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

Langage SQL Discussion :

Syntaxe SQL indépendante de la base de données


Sujet :

Langage SQL

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut Syntaxe SQL indépendante de la base de données
    Bonjour à tous,

    j'ai un petit soucis j'ai un projet c# qui se sert d'une BDD (mySql, Oracle ou SQL Server avec odbc suivant la connexion string).

    J'ai cependant un petit soucis de syntaxe sur une table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [user_password], [user_connection_attempt], [user_is_freezed] FROM [user] WHERE [user_login]='" + Name.Replace("'", "''") + "';
    Fonctionne sous SQL Server mais pas mysql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT `user_password`, `user_connection_attempt`, `user_is_freezed` FROM `user` WHERE `user_login`='" + Name.Replace("'", "''") + "';
    Fonctionne sous MySql mais pas sur SQL Server

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT user_password, user_connection_attempt, user_is_freezed FROM user WHERE user_login='" + Name.Replace("'", "''") + "';
    Fonctionne sous MySql mais pas sur SQL Server (user mot réservé a SQL Server (CREATE USER...).

    Si quelqu'un peut m'expliquer comment faire fonctionner les requêtes de partout ...

    Merci d'avance.

    Cordialement,
    NeoKript

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut
    Du coup j'ai changer le nom de la table en attendant de trouver mieux.

    Cependant, j'ai quelque soucis au niveau du cast du DataReader

    Lorsque je caste le DataReader[1] en Boolean :
    - type bit sous SQL Server, cela fonctionne
    - type tinyint(1) sous MySql, exception levé (cast invalide)

    De même pour DataReader[3] en Byte (valeur de 0 à 255) :
    - type tinyint sous SQL Server, cela fonctionne
    - type tinyint(4) sous MySql, exception levé (cast invalide)

    Si je met un Int16 au lieu d'un Byte ca fonctionne parfaitement.

    Merci d'avance.
    Cordialement,
    NeoKript

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Effectivement, la bonne manière de faire pour rendre le code SQL le plus compatible possible avec un maximum de SGBD est de ne mettre ni crochets, ni apostrophes inversées, ni autre caractère entourant les noms des objets de la BDD.

    Ce qui implique de ne pas utiliser de mots SQL pour nommer ces objets, ainsi que de ne pas utiliser de caractères embêtants tels que les caractères accentués, diacritiques ou les espaces.

    Voir à ce sujet l'article de SQLPro ainsi que la liste des mots réservés du SQL, son livre ou sa norme de développement des BDD.

    Quant aux types de données, c'est le même principe. Utiliser au maximum les types standard SQL qui sont en principe acceptés par les SGBDR dignes de ce nom et/ou convertis dans leurs types propres.

    Et une autre manière de s'affranchir de ces difficultés est d'utiliser les outils existants pour les langages de programmation qui composent eux-mêmes la requête selon le SGBD employé, tel que PDO pour PHP par exemple. Je ne sais pas ce qu'il existe pour C♯.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut
    Merci pour la réponse

    J'ai tout repris mon projet sous PowerAMC avec la norme détaillée dans le fichier pdf. Je trouve la méthode très bien, rigoureuse et tout.

    Merci encore !

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

Discussions similaires

  1. [SQL Serveur] Déployer une base de données
    Par aityahia dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 20/05/2007, 19h12
  2. [VBA-E] Requète SQL avec chemin de base de données variable
    Par Svart26 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2006, 13h29
  3. [Sql server][Oracle]Migration base de donnée.
    Par WELCOMSMAIL dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 23/05/2006, 21h19
  4. [SQL] Se connecter à une base de donnée pervasive
    Par botambaoaks dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/04/2006, 16h46
  5. [SQL] htmlentities(), nl2br() et base de donnée ?
    Par Ambri dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/01/2006, 12h56

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