ADO.NET & SQL SERVER mode déconnecté

Fermé
Bonjour,
j'ai une petite application dans laquelle je travail avec ADO.net en mode déconnecté pour se connecter avec une base de données en SQL SERVER , le problème c'est que une table dans la base de données contient un champs de type image alors lorsque je remplis le dataset avec cette table , et le contenu du dataset je l'ai mis dans une datagridview , mais l'image ne s'affiche plus est ce qu'il y'a moyen pour résoudre ce problème , comment convertir l'image au type bitmap et vise versa.
s'il vous plait n'hésitez pas à m'aider je ne suis pas professionnelle en programmation.
Configuration: Windows XP
Safari 525.13

11 réponses

  • Votes
  • Date
  • Date décroissante
  1. pourquoi remplir une base de données avec des images qui chargera notre base et augmentera le temps de réponse.
    je vous propose une solution :
    1- Copié l'image dans un disque dur
    2- Ajouter dans la table image un champs liens qui sera le lien de l'image

    et dans un picturbox vous charger juste l'adresse de l'image à la place de faire une conversion d'image
    1. Vraiment merci infiniment meme si que je n'ai pas compris quelques methodes mais je vais les chercher merci
      1. bonjour,

        pour la chaine de .connection je vous conseiller de voire ici https://www.connectionstrings.com/sql-server-2005/

        et pour l'ajout de l'image de la BD je crois il y a un error

        Dim con As New SqlConnection("Initial catalog=tp;data source=localhost;Integrated security=true")
                Dim da As New SqlDataAdapter ("Select id,com,img From tbimage", con)
                Dim MyCB As SqlCommandBuilder = New SqlCommandBuilder(da)
                Dim ds As New DataSet()
        
                da.MissingSchemaAction = MissingSchemaAction.AddWithKey
        
                Dim fs As New FileStream (txtimg.Text, FileMode.OpenOrCreate,  FileAccess.Read)
                Dim MyData(fs.Length) As Byte
                fs.Read(MyData, 0, fs.Length)
                fs.Close()
                con.Open()
                da.Fill(ds, "tbimage")
                Dim myRow As DataRow
                myRow = ds.Tables("tbimage").NewRow()
        
                myRow("id") = txtid.Text
                myRow("com") = txtcom.Text
                myRow("img") = MyData
                ds.Tables("tbimage").Rows.Add(myRow)
                da.Update(ds, "tbimage")
        
                fs = Nothing
                MyCB = Nothing
                ds = Nothing
                da = Nothing
        
                con.Close()
                con = Nothing
                MsgBox("Image bine Enregester")
        
                '--
            End Sub


        et concernant le déplacement entrent les enregistrements moi aussi j'ai le même problème Oo
        1. Oui bien sûr mais vous savez ça fait plus que 2 mois que je n'ai pas jeté un coup d'oeil sur cette application. en bref mon problème que c'est au niveau des bouttons de navigations je n'arrive pas à afficher l'image stoquée dans la base de données et lorsque j'ajoute par exemple une personne avec son image je n'arrive pas à stoquer son image dans la base de données.bon voilà le code je me suis inspirée d'un cours.
          Au nivea du load(j'arrive à etablir la connexion)
          dbpf = DbProviderFactories.GetFactory("System.Data.SqlClient")
          ocon = dbpf.CreateConnection
          ocon.ConnectionString = "Server=ELBAHI-ED56503A\SQLEXPRESS;database=personnes;integrated security=true"
          oda = dbpf.CreateDataAdapter
          oda.SelectCommand = ocon.CreateCommand
          oda.SelectCommand.CommandText = "select * from pers"
          ods = New DataSet
          oda.Fill(ods, "pers")

          Private Sub enregistrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles enregistrer.Click

          If n = 1 Then
          'Cas d'ajout
          Dim dlg As OpenFileDialog = New OpenFileDialog()
          dlg.Filter = "All Pictures|*.bmp;*.gif;*.jpg|Bitmaps|*.bmp|GIFs|*.gif|JPEGs|*.jpg"
          Dim dr As DataRow = ods.Tables("pers").NewRow
          dr("id") = TxtID.Text
          dr("nom") = TxtNom.Text
          dr("prénom") = TxtPrenom.Text
          TxtdateNaissance.Text = DateTimePicker1.Text
          dr("dateNaissance") = TxtdateNaissance.Text

          'If (dlg.ShowDialog = DialogResult.OK) Then

          ' PictureBox1.Image = New Bitmap(dlg.FileName)
          ' Dim name As String = dlg.FileName.Substring(dlg.FileName.LastIndexOf("\") + 1, dlg.FileName.Length - dlg.FileName.LastIndexOf("\") - 1)
          'End If

          'Dim mstr As MemoryStream = New MemoryStream
          'PictureBox1.Image.Save(mstr, PictureBox1.Image.RawFormat)
          'Dim arrImage() As Byte = mstr.GetBuffer()
          'dim cmd as string = "insert into pers (PictureName, Picture) values (@PName, @Pic)";

          'dr("picture") = PictureBox1
          ods.Tables("pers").Rows.Add(dr)
          'ods.AcceptChanges()
          nbrLignes = ods.Tables("pers").Rows.Count
          MsgBox("Lenombre des lignes après l'ajout : " & nbrLignes)
          MsgBox("L'ajout est effectué !!")
          ElseIf n = 2 Then
          Dim r = MessageBox.Show("êtes vous sûr de vouloir supprimer cette personne??", "Confirmation suppression", MessageBoxButtons.YesNo, MessageBoxIcon.Information)
          If r = vbYes Then
          ods.Tables("pers").Rows(i).Delete()
          MsgBox("Suppression effectué")
          Else
          MsgBox("Suppression annulée")
          End If
          ElseIf n = 3 Then
          Dim rep = MessageBox.Show("êtes vous sûr de vouloir modifier cette personne??", "Confirmation de modification", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
          If rep = vbYes Then
          ods.Tables("pers").Rows(i)(0) = TxtID.Text
          ods.Tables("pers").Rows(i)(1) = TxtNom.Text()
          ods.Tables("pers").Rows(i)(2) = TxtPrenom.Text
          ods.Tables("pers").Rows(i)(3) = TxtdateNaissance.Text

          Else
          MsgBox("Modification annulée")

          End If
          Dim cas As String = ods.Tables("pers").Rows(i).RowState.ToString
          MsgBox(cas)
          End If
          End Sub
          Maintenant j'espère que j'ai bien expliqué la situation donc oubliez mon code car je suis sûr qu'il ne marche pas vous pourriez me donnez un code tout à fait différent qui correspond le cas dont je t'ai expliqué merci d'avance. j'ai copié ton code pour l'essayer plus tard merciiiiiiiiiiiiiiiiiiiiiiiiiiii
          1. Merci pour ta réponse mais moi j'arrive à connecter la base de données j'ai un problème de conversion d'image lors de l'affichage en datagridview mais quand meme un grand merci
            1. bonjour,

              voici le code pour stocker une image dans une base de donne

              mais il faut le champs de table soit Image

               Dim con As New SqlConnection("Initial catalog=tp;data source=localhost;Integrated security=true")
                      Dim da As New SqlDataAdapter ("Select id,com,img From tbimage", con)
                      Dim MyCB As SqlCommandBuilder = New SqlCommandBuilder(da)
                      Dim ds As New DataSet()
              
                      da.MissingSchemaAction = MissingSchemaAction.AddWithKey
              
                      Dim fs As New FileStream (txtimg.Text, FileMode.OpenOrCreate,  FileAccess.Read)
                      Dim MyData(fs.Length) As Byte
                      fs.Read(MyData, 0, fs.Length)
                      fs.Close()
                      con.Open()
                      da.Fill(ds, "tbimage")
                      Dim myRow As DataRow
                      myRow = ds.Tables("tbimage").NewRow()
              
                      myRow("id") = txtid.Text
                      myRow("com") = txtcom.Text
                      myRow("img") = MyData
                      ds.Tables("tbimage").Rows.Add(myRow)
                      da.Update(ds, "tbimage")
              
                      fs = Nothing
                      MyCB = Nothing
                      ds = Nothing
                      da = Nothing
              
                      con.Close()
                      con = Nothing
                      MsgBox("Image bine Enregester")
              
                      '--
                  End Sub
              


              pour l'affichage dans datgridview c'est normal

              dg.datasource=ds.table("NomTable")
              1. tu px ajouté une picture box ds votre form é modifier le type du champ ds la base de donné en varchar puis copier le dossier des image ds le bin de lapplication
                cela peut aider a avoir ce ke tu vx je pense !
                1. je ne savais pas que mes questions n'ont meme une reponse.
                  1. cc stp
                    pourquoi on utilise le mode deconnexion dans ADO.net ?
                  2. Pour facilité le travaille