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 :

varbinary et BDD SQL Server


Sujet :

VB.NET

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut varbinary et BDD SQL Server
    Bonjour à tous,

    Voilà, je souhaiterais récupérer une colonne de ma base de données sous SQL Server, mais le problème est qu'elle est en type 'varbinary', qui, si je ne me trompe pas, corespond au type bytes sous Visual Basic .NET.

    J'aimerais donc afficher cette valeur soit dans un datagridview (ce qui me parait assez difficile vu le type de données), soit dans un textbox.

    Si quelqu'un pouvait m'aider sur la façon de procéder...

    Merci beaucoup !

    Will2taz

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    varbinary c'est une suite d'octet
    en vb c'est un tableau d'octets
    dim octets() as byte

    m'enfin un tableau d'octet tu peux le transformer en ce que tu veux
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Merci sperot51, peux tu m'aider pour ce qui est de la récupération de la valeur dans la base ? Car il me la transforme en String quand je veux l'afficher....

    Merci

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    quel est ton code qui récupère la valeur ?
    si c'est le datagridview qui s'en occupe et que donc tu t'en sers en mode "automatique", il faut surement que tu traites ca dans la requete

    si t'es en mode manuel, via un reader par exemple, tu peux faire la transformation en vb

    enfin qu'a tu mis dans ce champ varbinary ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Voici mon code pour extaire la valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim str AsString = "Data Source=SRVSQL;Initial Catalog=DBEMP;Persist Security Info=True;User ID=sa;Password=pass123"
    Dim conn AsNew SqlConnection(str)
    Try
    conn.Open()
    Dim cmd As SqlCommand = New SqlCommand("SELECT [SecretPasswd] from Employees")
    Dim Resultat AsByte() = cmd.ExecuteScalar
    conn.Close()
    Catch ex As Exception
    MsgBox(ex.Message, MsgBoxStyle.Critical, "Erreur lors de l'accès aux données")
    EndTry
    
    En fait, je souhaite récupérer la valeur [SecretPasswd] qui est stockée en Varbinary dans la base SQL Server, et l'affiché en tant que tel dans un textbox....

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    pourquoi utiliser un varbinary si c'est pour y stocker une chaine de caractère
    normalement le varbinary sert à mettre des images ou des fichiers

    enfin essaye :

    select convert([SecretPasswd],varchar) from employees
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    En fait, je ne souhaite pas le convertir, je souhaite tout simplement récupérer la valeur comme par exemple : 0x030203F1200AE

    Merci

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    un tableau d'octet n'est pas en héxadécimal
    donc il faudra bien faire une conversion à un moment ou à un autre car select d'un varbinary donne un tableau d'octets

    moi j'aurais vu
    Dim Resultat() As Byte = cmd.ExecuteScalar
    plutot que
    Dim Resultat As Byte() = cmd.ExecuteScalar
    mais y a ptete pas de différence

    après tu fais ce que tu veux avec ce tableau d'octet pour le convertir, en parcourant les octets via une boucle
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Voila ce que j'obtiens avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim Resultat AsByte() = cmd.ExecuteScalar()
     
    ForEach bt As Byte In Resultat
       MsgBox(bt)
    Next
    Résultat : "48 0 39 0 74..."

    au lieu de : "0 x 30 00 27 00 4A..."

    Avec l'un ou l'autre. Une idée ?

    Merci.

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    convertit ton tableau d'octet en héxadécimal si c'est de l'héxa que tu veux
    l'héxa est basée sur 2 octets et non 1
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    Merci, mais comme je débute, je ne sais pas comment faire pour convertire en héxa ...

    Peux tu m'aider stp ?

    Merci bcp !

  12. #12
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    C'est bon, j ai trouvé !!!

    Pour infos :

    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
     
    Dim Resultat() AsByte = cmd.ExecuteScalar()
    Dim HexaStr AsString = ""
     
    ForEach bt AsByteIn Resultat
     
    If Hex(bt).Length = 1 Then
     HexaStr = HexaStr & 0 & Hex(bt)
    Else
    HexaStr = HexaStr & Hex(bt)
    EndIf
    Next
    Me.TextBox1.Text = HexaStr
    

  13. #13
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    C'est bon, j ai trouvé !!!

    Pour infos :

    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
     
    Dim Resultat() AsByte = cmd.ExecuteScalar()
     
    Dim HexaStr AsString = ""
     
    ForEach bt AsByteIn Resultat
       If Hex(bt).Length = 1 Then
         HexaStr = HexaStr & 0 & Hex(bt)
       Else
         HexaStr = HexaStr & Hex(bt)
       EndIf
    Next
     
    Me.TextBox1.Text = HexaStr

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

Discussions similaires

  1. Fusion BDD SQL Server
    Par nadja dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 04/07/2006, 16h03
  2. [VB.NET] Importation données Excel pour alimenter BDD Sql Server
    Par Aphrauditte dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/05/2006, 16h24
  3. Accéder à une bdd SQL server via un pc distant
    Par shako95 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/12/2005, 22h38
  4. Erreur de connexion à une BDD SQL Server 2000 avec BDE
    Par SchpatziBreizh dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/06/2005, 11h22
  5. manipuler une bdd sql server en MFC ou excel ?
    Par roninou dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 18/10/2004, 11h51

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