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

ASP.NET Discussion :

lire d'une base de données et stocker dans un tableau


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut lire d'une base de données et stocker dans un tableau
    Salut,

    j'utilise ASP.NET (VB.NET) avec microsoft access 2007, le type du serveur est sql server...

    problème : je suis en train de lire les données avec un cmd.ExecuteReader , le probleme est que, quand j'affiche par exemple tab(3) avec lbl2, ça ne s'affiche pas, donc les données ne sont pas récupérées dans le tableau...quelqu'un aurait une idée comment faire....?

    NB: la requete sql marche, je l'ai essayé toute seule dans access 2007


    voici mon code:

    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
       Function verifier_db(ByVal lastname)
     
            Dim conn As New SqlConnection
            Dim reader As SqlDataReader
            Dim serverName As String = "basemaster"
     
            conn.ConnectionString = "packet size=4096;user id=wpmreports;pwd=welcome;data source=""" & serverName & """;persist security info=False;initial catalog=DSDB"
     
            conn.Open()
     
            Dim cmd As SqlCommand
            cmd = Nothing
     
            cmd = New SqlCommand("SELECT PERSON.PERSON_ID, PERSON.FIRSTNAME, PERSON.LASTNAME, PERSON.INTERNET_ADD FROM PERSON WHERE (((PERSON.LASTNAME)=' " + lastname + " '));", conn)
     
            reader = cmd.ExecuteReader
     
            Dim tab(3) As String
     
            While reader.Read
     
                tab(0) = reader.GetString(0) 'person_id
                tab(1) = reader.GetString(1) 'firstname
                tab(2) = reader.GetString(2) 'lastname
                tab(3) = reader.GetString(3) 'email
                lbl2.Text = tab(3)
            End While
     
            reader.Close()
            conn.Close()
            Return tab
        End Function
     
     
        Sub Page_Load()
     
            Dim firstname As String = string1.Value
            Dim lastname As String = string2.Value
            Dim table(3) As String
     
            table = verifier_db(lastname)
            lbl1.Text = "welcome " & string1.Value & " " & string2.Value
     
     
        End Sub

  2. #2
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Par défaut
    Salut,

    Quand je regarde la requête que tu utilises, y a un truc qui me choque.
    Si tu es en vb.net, l'opérateur de concaténation n'est pas + mais &.
    essaie plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT PERSON.PERSON_ID, PERSON.FIRSTNAME, PERSON.LASTNAME, PERSON.INTERNET_ADD FROM PERSON WHERE (((PERSON.LASTNAME)=' " & lastname & " '));"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    j'ai essayé, ça n'a rien changé...

    toujours ça n'affiche pas la valeurde tab(3) avec le label...

  4. #4
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Par défaut
    et si pour faire un test, au lieu d'utiliser un label, tu le remplaces le par un textbox : ca donne quoi ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    si je remplace par un textebox, ça n'écrit rien dedans non plus, le problème c'est que le code ne donne pas d'erreur, mais en même temps, il n'écrit pas une des valeurs stockés dans le tableau, donc il y a un probème avec la manière dont le code lie de la base données ou un problème avec la manière dont il stocke dans le tableau.....mais je vois pas où est l'erreur.....

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    et même si juste je fais..


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    reader = cmd.ExecuteReader
     
              Dim tab(3) As String
     
              While reader.Read
     
                  MsgBox(reader.GetString(3))
     
              End While
    normalement, un MsgBox doit afficher la quatrième valeur, mais ce n'est pas le cas...donc là, je vois que c'est pas un problème de stockage dans le tableau, car le code n'arrive pas à lire avec le "reader"...

    est-ce qu'il y aurait quelqu'un pour m'aider?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    il y a personne pour m'aider.....????

  8. #8
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Ca correspond quoi MsgBox en ASP.NET?

    Et si tu remplaces:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tab(3) = reader.GetString(3) 'email
    lbl2.Text = tab(3)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     lbl2.Text = reader.GetString(3) 'email

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    oublie MsgBox, ce n'est pas important.....


    mais concernant le label, j'ai essayé de faire comme tu viens de me le dire, et ça me donne la même chose...le code ne me done pas d'erreur mais auncune valeur ne s'affiche !

  10. #10
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Si je peux me permettre, plutôt que d'utiliser cette concaténation, je passerais par un SQLParameter pour une meilleure lisibilité et plus de sécurité.

    Si la requête fonctionne dans Access, qu'aucune erreur n'est levée, es-tu bien sûr que la variable lastname passée en paramètre de ta méthode est bien renseignée ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    Citation Envoyé par calagan99 Voir le message
    Si je peux me permettre, plutôt que d'utiliser cette concaténation, je passerais par un SQLParameter pour une meilleure lisibilité et plus de sécurité.

    Si la requête fonctionne dans Access, qu'aucune erreur n'est levée, es-tu bien sûr que la variable lastname passée en paramètre de ta méthode est bien renseignée ?
    oui la requête fonctionne très bien dans access, et même j'ai essayé d'afficher lastname (que je le rentre à travers la page html) et ça l'affiche...le truc c'est que il y a un truc qui cloche dans la façon de lire l'information car, comme le tableau n'est pas rempli et n'affiche pas de valeur, on peut conclure que la manière dont est lue l'information de la db est erronée, pourtant je trouve cette manière très normal et je ne vois pas l'erreur.....

  12. #12
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Passe en débug et regarde si tu rentres dans while reader.Read

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    ah voilà, je ne rentre pas dans "while reader.read" , mais c'est bizarre je ne comprends pas pourquoi...

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    si j'affiche lastname juste avant "while reader.read" ça l'affiche, mais si je l'affiche juste après, ça ne l'affiche pas....quqelqu'un pourrait me dire pourquoi et comment pourrai-je faire??

    Merci d'avance...

  15. #15
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tjs en debug, juste avant d'appeler ExecuteReader, regarde ce que vaut
    "SELECT PERSON.PERSON_ID, PERSON.FIRSTNAME, PERSON.LASTNAME, PERSON.INTERNET_ADD FROM PERSON WHERE (((PERSON.LASTNAME)=' " + lastname + " '));

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    en fait, le requête sql doit être celle-çi :

    celle-çi marche dans access mais ne marche pas dans mon code..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT dbo_PERSON.PERSON_ID, dbo_PERSON.FIRSTNAME, dbo_PERSON.LASTNAME, dbo_PERSON.INTERNET_ADD
    FROM dbo_PERSON
    WHERE (((dbo_PERSON.LASTNAME)=' "+ lastname +" '));
    Un des membres du forum m'avait répondu sur cette question l'autre fois qu'il fallait enlever les "dbo_" car là je travaille avec les serveurs de l'entreprise..et je les avait enlever et ça marchait....(j'avais ré-essayé dans access sans "dbo_" et c'etait bon)

    donc moi spontanément, j'ai enlevé les "dbo_" pour cette requête aussi, mais là, quand je ré-essaye dans access la requête sql sans "dbo_", ça ne marche pas, et si je la met dans mon code avec les "dbo_", ça ne marche pas non plus.....


    voilà, c'est ça le problème,

    quelqu'un saurait comment le résoudre?

    merci..

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    dans ce code là, je retourne un tableau de string, mais tab(0) c'est un entier, donc je devais le transformer en string, donc j'ai essayé de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab(0) = (reader.GetString(0)).toString()
    mais ça ne marche pas non plus..

    quelqu'un pourrait me dire comment faire?

    voiçi le code:

    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
       Function verifier_db(ByVal lastname)
     
            Dim conn As New SqlConnection
            Dim reader As SqlDataReader
            Dim serverName As String = "basemaster"
     
            conn.ConnectionString = "packet size=4096;user id=wpmreports;pwd=welcome;data source=""" & serverName & """;persist security info=False;initial catalog=DSDB"
     
            conn.Open()
     
            Dim cmd As SqlCommand
            cmd = Nothing
     
            cmd = New SqlCommand("SELECT PERSON.PERSON_ID, PERSON.FIRSTNAME, PERSON.LASTNAME, PERSON.INTERNET_ADD FROM PERSON WHERE (((PERSON.LASTNAME)=' " + lastname + " '));", conn)
     
            reader = cmd.ExecuteReader
     
            Dim tab(3) As String
     
            While reader.Read
     
                tab(0) = reader.GetString(0) 'person_id
                tab(1) = reader.GetString(1) 'firstname
                tab(2) = reader.GetString(2) 'lastname
                tab(3) = reader.GetString(3) 'email
                lbl2.Text = tab(3)
            End While
     
            reader.Close()
            conn.Close()
            Return tab
        End Function
     
     
        Sub Page_Load()
     
            Dim firstname As String = string1.Value
            Dim lastname As String = string2.Value
            Dim table(3) As String
     
            table = verifier_db(lastname)
            lbl1.Text = "welcome " & string1.Value & " " & string2.Value
     
     
        End Sub

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    personne pour répondre........

  19. #19
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tant que tu sauras pas pourquoi reader.Read() retourne false, ça sert à rien de chercher plus loin

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 107
    Par défaut
    en fait, si j'enlève tab(0), et comme tous les autres valeurs affectées à la table sont des string et c'est un tableau de string, ça m'afficher tab(1), tab(2), tab(3)...


    mais le problème est que j'ai un tableau de string et reader.GetString(0) est un entier...donc je dois le convertir en string..

    bon , j'ai essayé de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab(0)=(reader.GetString(0)).toString()
    mais ça n'a pas marchait,

    quelqu'un aurait une idée comment convertir de "integer" en "string"???


    merci d'avance...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Jena] Une base de données pour stocker les triplets RDF ?
    Par sarahm dans le forum Frameworks
    Réponses: 6
    Dernier message: 27/04/2012, 15h10
  2. lire d'une base de données et stocker dans un tableau
    Par michael_MS dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 19/11/2008, 11h10
  3. Récuperer les données d'une base de donnée via ODBC dans une variable
    Par arogues dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/04/2008, 15h27
  4. Réponses: 11
    Dernier message: 16/12/2007, 00h48
  5. Développer une base de données sans BDE dans DELPHI 3 PRO
    Par ndlh721 dans le forum Bases de données
    Réponses: 3
    Dernier message: 05/02/2005, 14h21

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