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

  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
  2. 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. 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. 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. 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. 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. Vraiment merci infiniment meme si que je n'ai pas compris quelques methodes mais je vais les chercher merci
              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