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

VB.NET Discussion :

requête SQL parametrée


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut requête SQL parametrée
    Hello tout le monde,

    Depuis ce matin j'essaie de parametrer une requête SQL en vain.

    Apres avoir lu de nombraux posts sans aucun résultat probant , je m'en remets à vous ;-)

    voici le code de ma méthode :
    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
    45
    46
    Public Sub getQlqCh()
    
            Dim oOleDbConnection = New OleDb.OleDbConnection(Me.getConnectionString())
            oOleDbConnection.Open()
    
            If oOleDbConnection.State <> ConnectionState.Open Then
                Throw New DBException("La connection à la base de données n'a pas été correctement ouverte")
            End If
    
            Dim psql As String
    
            psql = " SELECT dbradio.ressph.NDS, dbradio.ressph.NDS, dbradio.ressph.SEQP, medcpofb.sprphm.PRNM, dbradio.ressph.QTPR, medcpofb.sprphm.PRNA "
            psql += "From dbradio.RESSPH, medcpofb.SPRPHM "
            psql += "WHERE dbradio.ressph.NDS In ( "
            psql += "                      SELECT DISTINCT (dbradio.sdsm.NDS) "
            psql += "                      FROM dbradio.SDSM, dbradio.RESSSI "
            psql += "                      WHERE dbradio.sdsm.NDS = dbradio.resssi.NDS "
            psql += "                      and dbradio.sdsm.DVIS >='10/26/2009' "
            psql += "                      and dbradio.sdsm.DVIS <='11/01/2009' "
            psql += "                      and dbradio.resssi.CSIT=@p "
            psql += "                    ) "
            psql += "and  medcpofb.sprphm.PRKO = dbradio.ressph.PRKO "
            psql += "order by dbradio.ressph.NDS asc"
    
            Dim cmd = New OleDbCommand()
            cmd.CommandText = psql
            cmd.Parameters.Add(New OleDbParameter("@p", OleDbType.VarChar, 2))
            cmd.Parameters("@p").Value = "PP"
            cmd.Connection = oOleDbConnection
    
    
            cmd.Prepare() ' L'exception se produit a cette instruction
    
            Dim dr As OleDbDataReader = cmd.ExecuteReader()
    
            While dr.Read()
    
                Dim listItem As New String("")
                listItem = dr.GetName("0")
                MsgBox(listItem)
                listItem = dr.GetValue("0").ToString()
    
                MsgBox(listItem)
                Dim values(dr.FieldCount) As Object
                dr.GetValues(values)
            End While
    j'ai une OleDBConnection avec comme message :
    SQL0206: La colonne @P ne se trouve pas dans les tables indiquées.
    Cause . . . . . : La colonne @P ne se trouve pas dans la table *N de *N. Si le nom de table est *N, @P ne se trouve dans aucune des tables ou vues pouvant être référencées. Que faire . . . : Procédez de l'une des façons suivantes, puis renouvelez votre demande : - Assurez-vous que les noms de colonnes et de tables sont corrects. - Dans le cas d'une instruction SELECT, vérifiez que toutes les tables requises figurent bien dans la clause FROM. - Si vous souhaitez établir une corrélation, qualifiez le nom de colonne à l'aide de l'indicateur de table adéquat.
    Et tant qu'on y est : Existe-il une méthode permettant de récupérer la valeur d'une colonne en fonction de du nom de la colonne (ex : MonOleDbDataReader.getValue("LeNomDeMaColonne"))

    Merci pour votre aide les gars.

  2. #2
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Salut
    pourquoi tu écris deux fois dbradio.ressph.NDS, dbradio.ressph.NDS dans
    ta requette
    et pour concatener utilise le &
    From dbradio.RESSPH, medcpofb.SPRPHM "
    pas clair
    dbradio et medcpofb ce sont deux BDD ?

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut
    Citation Envoyé par shayw Voir le message
    Salut
    pourquoi tu écris deux fois dbradio.ressph.NDS, dbradio.ressph.NDS dans
    ta requette
    et pour concatener utilise le &
    From dbradio.RESSPH, medcpofb.SPRPHM "
    pas clair
    dbradio et medcpofb ce sont deux BDD ?
    Salut,
    J'ai écris 2X NDS car c'est une erreur de copier coller
    quant au from ce sont 2 base differentes.

    Quelle est la différence entre le '+' et le '&' pour la concaténation?

    La requette fonctionne correctement si je remplace le @p par une valeur. C'est surtout le passage de parametres à la requête qui me pose problème

  4. #4
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    pourquoi &

    déja pour prendre de bonne habitude

    Citation du msdn
    When you use the + operator, you may not be able to determine whether addition or string concatenation will occur. Use the & operator for concatenation to eliminate ambiguity and provide self-documenting code.
    sans garantir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     psql = " SELECT dbradio.ressph.NDS,dbradio.ressph.SEQP, medcpofb.sprphm.PRNM, dbradio.ressph.QTPR, medcpofb.sprphm.PRNA "
            psql &= " FROM dbradio.RESSPH, medcpofb.SPRPHM  WHERE dbradio.ressph.NDS IN "
            psql &= "( SELECT DISTINCT dbradio.sdsm.NDS  FROM dbradio.SDSM, dbradio.RESSSI "
            psql &= " WHERE dbradio.sdsm.NDS = dbradio.resssi.NDS "
            psql &= " AND dbradio.sdsm.DVIS >= '10/26/2009' AND dbradio.sdsm.DVIS <='11/01/2009' "
            psql &= " AND dbradio.resssi.CSIT = [@p] )"
            psql &= " AND  medcpofb.sprphm.PRKO = dbradio.ressph.PRKO "
            psql &= " ORDER BY dbradio.ressph.NDS asc"
            Dim cmd = New OleDbCommand()
            cmd.CommandText = psql
            cmd.Parameters.Add(New OleDbParameter("@p", OleDbType.VarChar, 2))
            cmd.Parameters("@p").Value = "PP"
            cmd.Connection = oOleDbConnection

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 144
    Par défaut
    Citation Envoyé par shayw Voir le message
    pourquoi &

    déja pour prendre de bonne habitude

    Citation du msdn


    sans garantir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     psql = " SELECT dbradio.ressph.NDS,dbradio.ressph.SEQP, medcpofb.sprphm.PRNM, dbradio.ressph.QTPR, medcpofb.sprphm.PRNA "
            psql &= " FROM dbradio.RESSPH, medcpofb.SPRPHM  WHERE dbradio.ressph.NDS IN "
            psql &= "( SELECT DISTINCT dbradio.sdsm.NDS  FROM dbradio.SDSM, dbradio.RESSSI "
            psql &= " WHERE dbradio.sdsm.NDS = dbradio.resssi.NDS "
            psql &= " AND dbradio.sdsm.DVIS >= '10/26/2009' AND dbradio.sdsm.DVIS <='11/01/2009' "
            psql &= " AND dbradio.resssi.CSIT = [@p] )"
            psql &= " AND  medcpofb.sprphm.PRKO = dbradio.ressph.PRKO "
            psql &= " ORDER BY dbradio.ressph.NDS asc"
            Dim cmd = New OleDbCommand()
            cmd.CommandText = psql
            cmd.Parameters.Add(New OleDbParameter("@p", OleDbType.VarChar, 2))
            cmd.Parameters("@p").Value = "PP"
            cmd.Connection = oOleDbConnection

    Merci pour l'info mais en effet ta sugestion ne fonctionne pas, il me renvoie cette erreur :
    SQL0104: Elément syntaxique [ n'est pas correct. Eléments possibles : ( + - ? : DAY INF NAN NOT RID ROW RRN CASE CAST CHAR DATE DAYS.
    Cause . . . . . : Une erreur de syntaxe a été détectée au niveau de l'élément [. [ n'est pas un élément correct. ( + - ? : DAY INF NAN NOT RID ROW RRN CASE CAST CHAR DATE DAYS est une liste partielle des éléments corrects. Cette liste suppose que l'instruction est correcte jusqu'à cet élément. L'erreur peut être située plus haut dans l'instruction, mais la syntaxe de l'instruction apparaît correcte jusqu'à ce point. Que faire . . . : Effectuez les opérations suivantes, puis renouvelez votre demande : - Vérifiez l'instruction au niveau de l'élément [. Corrigez-la. Il peut s'agir d'une virgule ou de guillemets manquants, ou de clauses mal ordonnées. - Si l'erreur porte sur <FIN-INSTRUCTION>, corrigez l'instruction SQL qui ne se termine pas sur une clause correcte.

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/08/2012, 15h57
  2. Requête SQL parametrée
    Par LeKaïzen210 dans le forum Général Java
    Réponses: 2
    Dernier message: 05/10/2011, 12h45
  3. Requête SQL parametrée
    Par marcolo21 dans le forum ASP
    Réponses: 3
    Dernier message: 05/11/2010, 09h19
  4. Comment parametrer une requête SQL alimentant un Report sous VB6
    Par juldace dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 29/07/2008, 14h36
  5. Parametres de requête SQL Oracle
    Par gunbol dans le forum Oracle
    Réponses: 2
    Dernier message: 19/02/2008, 14h31

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