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 :

problème avec insertion des données dans sqlServer


Sujet :

VB.NET

  1. #1
    Invité
    Invité(e)
    Par défaut problème avec insertion des données dans sqlServer
    bonjour
    je veux insérer une requête dans une base de données sqlserver
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        strSql = "insert into dbo.entreprise values('" & TextBox1.Text & "','" & PictureBoxImageToBytes(PictureBox1) & "' ,'" & TextBox3.Text & "','" & TextBox4.Text & "','" & TextBox5.Text & "','" & TextBox6.Text & "','" & TextBox7.Text & "','" & TextBox8.Text & "')"
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      Public Function PictureBoxImageToBytes(ByVal picBox As PictureBox) As Byte()
            If (picBox IsNot Nothing) AndAlso (picBox.Image IsNot Nothing) Then
                Dim bmp As New Bitmap(picBox.Image)
                Dim ms As New System.IO.MemoryStream()
                bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp)
                Dim buff As Byte() = ms.ToArray()
                ms.Close()
                ms.Dispose()
                Return buff
            Else
                Return Nothing
            End If
        End Function
    mais j 'ai une erreur au niveau de 2eme champs
    l'opérateur & n'est pas défini pour les type 'string' 'tableau à 1 dimension de byte'
    Dernière modification par Deepin ; 22/05/2012 à 17h53. Motif: Balises [QUOTE]...[/QUOTE]

  2. #2
    Invité
    Invité(e)
    Par défaut
    Je serai toi je passerai par une procédure stockée ça serai plus simple.

  3. #3
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    1. Passes par des requêtes paramétrées, c'est plus propre et plus sûr
    2. L'erreur est tout à fait normale, tu essayes de concaténer des chaines de caractères avec un MemoryStream
    3. Si tu veux la chaine associée à ton MemoryStream, tu peux passer par un StreamReader et la méthode ReadToEnd
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  4. #4
    Invité
    Invité(e)
    Par défaut re
    sincèrement j'ai pas compris, est ce que vous pouvez expliciter plus, ou bien me corriger cette erreur et merci

  5. #5
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Quand tu fais ceci :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.Text & "','" & PictureBoxImageToBytes(PictureBox1)
    tu essaye de concaténer la première avec le retour de ta méthode PictureBoxImageToBytes. Or, cette méthode te renvoie un MemoryStream. Pour obtenir la chaine de caractère associée à ce flux, il faut utiliser un StreamReader.

    Par exemple : (en c# car le vb m'irrite les yeux)

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // ta méthode où tu affectes le buffer à l'objet buff
    StreamReader myReader = new StreamReader(buff);
    return myReader.ReadToEnd();
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  6. #6
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Salut,
    Citation Envoyé par Er3van Voir le message
    L'erreur est tout à fait normale, tu essayes de concaténer des chaines de caractères avec un MemoryStream
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSql = "insert into dbo.entreprise values('" & TextBox1.Text & "','" & PictureBoxImageToBytes(PictureBox1) & "' ,'" & TextBox3.Text & "','" & TextBox4.Text & "','" & TextBox5.Text & "','" & TextBox6.Text & "','" & TextBox7.Text & "','" & TextBox8.Text & "')"
    Ici, PictureBoxImageToBytes(PictureBox1) retourne un tableau de Byte, et non une chaîne de caractère..
    Citation Envoyé par Er3van Voir le message
    Si tu veux la chaine associée à ton MemoryStream, tu peux passer par un StreamReader et la méthode ReadToEnd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function ReadAll(ByVal memStream As MemoryStream) As String
        ' Reset the stream otherwise you will just get an empty string.
        ' Remember the position so we can restore it later.
        Dim pos = memStream.Position
        memStream.Position = 0
     
        Dim reader As New StreamReader(memStream)
        Dim str = reader.ReadToEnd()
     
        ' Reset the position so that subsequent writes are correct.
        memStream.Position = pos
     
        Return str
    End Function
    J’ai des questions à toutes vos réponses!

  7. #7
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    En effet, je n'avais pas lu la méthode jusqu'au bout...
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

Discussions similaires

  1. [Débutant] problème avec insertion des données dans sqlServer
    Par Invité dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/05/2012, 10h45
  2. [Data] problème avec l’enregistrement des données dans ma base
    Par yous18 dans le forum Spring
    Réponses: 2
    Dernier message: 13/04/2012, 13h50
  3. [Débutant] Problème d'insertion des données dans la base
    Par hugnka dans le forum VB.NET
    Réponses: 6
    Dernier message: 07/04/2012, 18h00
  4. nouveau problême d'insertion des données dans la base de données
    Par tchimou dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/03/2007, 15h32
  5. [VB6]problème d'insertion des donneés dans une base d'Access2003
    Par lanbok dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/05/2006, 12h17

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