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

PostgreSQL Discussion :

Problème de paramétrage de SQL avec NpgSQL.


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 249
    Par défaut Problème de paramétrage de SQL avec NpgSQL.
    Salut à toutes et à tous,

    J'ai un problème avec le paramétrage d'une requête SQL.

    Soit un code non paramétré qui fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    public class reno_rafas_par_mandat
    {
        private Connection_PostgreSQL db;
        private NpgsqlCommand com;
        private NpgsqlDataReader dr;
        private string requete;
        private string TABLE = "reno_rafas";
     
        public reno_rafas_par_mandat(Connection_PostgreSQL db)
    	{
            this.db = db;
    	}
     
        public ArrayList SelectRafasParMandat(int MANDAT)
        {
            ArrayList arlist = new ArrayList();
            if (db.getDbUp())
            {
                requete = "SELECT * FROM " + TABLE + " WHERE num_mandat = " + MANDAT + " ORDER BY num_rafa;";
                com = new NpgsqlCommand(requete, db.getConnectionRessource());
                dr = com.ExecuteReader();
                int j = 1;
                arlist.Insert(0, dr.FieldCount);  // place le nombre de champs retournés dans le (0) du arraylist.
                while (dr.Read())
                {
                    for (int i = 0; i < dr.FieldCount; i++)
                    {
                        arlist.Insert(j, dr.GetValue(i));
                        j++;
                    }
                }
                return arlist;
            }
            else
            {
                Console.WriteLine("Base non connectée.");
                return arlist;
            }
        }

    Soit le même code paramétré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    public class reno_rafas_par_mandat
    {
        private Connection_PostgreSQL db;
        private NpgsqlCommand com;
        private NpgsqlDataReader dr;
        private string requete;
        private string TABLE = "reno_rafas";
     
        public reno_rafas_par_mandat(Connection_PostgreSQL db)
    	{
            this.db = db;
    	}
     
        public ArrayList SelectRafasParMandat(int MANDAT)
        {
            ArrayList arlist = new ArrayList();
            if (db.getDbUp())
            {
                requete = "SELECT * FROM :table WHERE num_mandat = :mandat ORDER BY num_rafa;";
                com = new NpgsqlCommand(requete, db.getConnectionRessource());
                com.Parameters.Add(new NpgsqlParameter("table", DbType.String));
                com.Parameters.Add(new NpgsqlParameter("mandat", DbType.Int32));
                com.Parameters["table"].Value = TABLE;
                com.Parameters["mandat"].Value = MANDAT;
                dr = com.ExecuteReader();
                int j = 1;
                arlist.Insert(0, dr.FieldCount);  // place le nombre de champs retournés dans le (0) du arraylist.
                while (dr.Read())
                {
                    for (int i = 0; i < dr.FieldCount; i++)
                    {
                        arlist.Insert(j, dr.GetValue(i));
                        j++;
                    }
                }
                return arlist;
            }
            else
            {
                Console.WriteLine("Base non connectée.");
                return arlist;
            }
        }
    Cette requête paramétrée me renvoit cette erreur :
    ERROR: 42601: syntax error at or near "E'reno_rafas'"
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: Npgsql.NpgsqlException: ERROR: 42601: syntax error at or near "E'reno_rafas'"

    Erreur source:


    Ligne 33 : com.Parameters["table"].Value = TABLE;
    Ligne 34 : com.Parameters["mandat"].Value = MANDAT;
    Ligne 35 : dr = com.ExecuteReader();
    Ligne 36 : int j = 1;
    Ligne 37 : arlist.Insert(0, dr.FieldCount); // place le nombre de champs retournés dans le (0) du arraylist.

    Je ne comprend pas d'où sort ce E' en avant du nom de la table.

    De plus, si j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    com.Parameters["table"].Value = "reno_rafas";
    je reçois toujours l'erreur.

    En fait, le seul moyen de ne plus l'avoir est retirer le paramétrage de la table dans la requête SQL.
    Quelle est mon erreur ?
    Je ne comprend pas.

    PS : J'ai essayé aussi en changeant le nom du paramètres, au cas ou le mot table aurait été dérangeant, mais ça n'a rien changé.

    Merci de vos z'avis z'avisés,
    Jean-Marc

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Par défaut
    Citation Envoyé par Jean-Marc68 Voir le message
    Salut à toutes et à tous,
    Soit le même code paramétré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        public ArrayList SelectRafasParMandat(int MANDAT)
        {
            ArrayList arlist = new ArrayList();
            if (db.getDbUp())
            {
                requete = "SELECT * FROM :table WHERE num_mandat = :mandat ORDER BY num_rafa;";
                com = new NpgsqlCommand(requete, db.getConnectionRessource());
                com.Parameters.Add(new NpgsqlParameter("table", DbType.String));
                com.Parameters.Add(new NpgsqlParameter("mandat", DbType.Int32));
    Cette requête paramétrée me renvoit cette erreur :


    Je ne comprend pas d'où sort ce E' en avant du nom de la table.

    De plus, si j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    com.Parameters["table"].Value = "reno_rafas";
    je reçois toujours l'erreur.

    En fait, le seul moyen de ne plus l'avoir est retirer le paramétrage de la table dans la requête SQL.
    Quelle est mon erreur ?
    Je ne comprend pas.

    PS : J'ai essayé aussi en changeant le nom du paramètres, au cas ou le mot table aurait été dérangeant, mais ça n'a rien changé.

    Merci de vos z'avis z'avisés,
    Jean-Marc

    franchement ,je ne vois pas non plus d'où vient le E mais je te suggère de garder le paramètrage et seulement d'enlever les ":" avant table et mandat donc la requête devient :
    requete = "SELECT * FROM table WHERE num_mandat = mandat ORDER BY num_rafa";

    puisque ,le messages t'a donné les deux lignes où il ya les variables precedées des ":" comme sources de l'erreur ;et si tu vois bien,il ya des quotes qui encadrent le nom de la table "E'reno_rafas'" c'est comme si il ya une concatenation,selon moi c'est dû aux ":"
    essaie donc la requête sans deux points.
    je ne sais pas si j'ai apporté un plus et informe nous si tu résous le problème

Discussions similaires

  1. [CS4] Problème de sous-requêtes SQL avec Dreamweaver
    Par WPH2009 dans le forum Dreamweaver
    Réponses: 5
    Dernier message: 01/04/2009, 18h50
  2. Problème de paramètrage de SQL SERVER 2005
    Par transistor49 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/10/2007, 14h30
  3. [Access] Problème dans une requête SQL avec INNER JOIN ?
    Par bds2006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/06/2006, 10h57
  4. Problème dans une requête SQL avec AS et ON ?
    Par bds2006 dans le forum Bases de données
    Réponses: 9
    Dernier message: 26/06/2006, 15h25
  5. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 16h15

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