Member 13910887 Ответов: 3

Извлеките все изображение из моего msql и вставьте его в listview


Private Sub load_data()

       Dim dt As DataTable

       Dim sql As String

       Try
           cn = New MySqlConnection
           cn.ConnectionString = "data source=localhost; user id=root; database = chamchamber;"
           cn.Open()
           sql = "SELECT IMG FROM category;"



           cmd = New MySqlCommand(sql, cn)
           da = New MySqlDataAdapter
           dt = New DataTable
           da.SelectCommand = cmd
           da.Fill(dt)
           cn.Close()
           DataGridView1.DataSource = dt

       Catch ex As MySqlException
           MsgBox(ex.Message)
       Finally
           cn.Close()
           da.Dispose()
       End Try
   End Sub


Что я уже пробовал:

код сверху берет все изображение из базы данных и вставляет в datagridview1, и его нужно изменить, чтобы быть лучше, но мне нужно получить все изображение из th DB и вставить его в listview.

я все готов сохранить изображение в mysqldatabase, и я пытаюсь найти какой-то код, чтобы получить изображение из mysqldatabase и вставить его в listview

Private Sub ADDCATEGRYBNT_Click(sender As Object, e As EventArgs) Handles ADDCATEGRYBNT.Click
     ' picturebox1.image = Nothing 'it will work if theres no statement

     If PictureBox1.Image Is Nothing Then
         MessageBox.Show("Please Insert image ")
         addcategoryclear()                              'you call ddcategoryclear()  to clear textbox and picturebox
     ElseIf TextBox1.Text = "" Then
         MessageBox.Show("Please Insert Image Name")
         addcategoryclear()                              'you call ddcategoryclear()  to clear textbox and picturebox
     Else
         Dim ms As New MemoryStream  'need to Imports System.IO from general
         PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat) ' save IMAGE

         cn = New MySqlConnection(constr)
         cn.Open()
         Dim command As New MySqlCommand("INSERT INTO `category`( `IMG`, `NAME`) VALUES (@IMG,@NAME)", cn)
         With command.Parameters
             .Add("@IMG", MySqlDbType.Blob).Value = ms.ToArray()
             .AddWithValue("NAME", TextBox1.Text)
         End With

         If command.ExecuteNonQuery() = 1 Then
             MessageBox.Show("You Successfully Save")
         Else
             MessageBox.Show("Something Wrong Pleas Try again")
         End If
     End If
     addcategoryclear() 'you call ddcategoryclear()  to clear textbox and picturebox
     comboboxretrieve() 'you call comboBoxretrieve to Refresh ComboBox1
 End Sub

3 Ответов

Рейтинг:
2

OriginalGriff

Код, который вы показываете, не имеет ничего общего с базами данных: он считывает имена файлов из папки и добавляет их.
Чтобы получить их из БД, вам нужно будет начать с просмотра вашей БД и того, что в ней хранится: это данные изображения в виде двоичного большого двоичного объекта или текстовая строка, описывающая путь к ile?

Если это путь к файлу, то к какой машине он относится? Имейте в виду, что в рабочей среде сервер БД не будет тем же компьютером, что и локальный клиент, и сохраненный путь БД должен находиться в том месте, к которому клиентский компьютер имеет прямой доступ.

Если это двоичный двоичный объект, то у вас могут возникнуть дополнительные проблемы: Почему я получаю "параметр не является допустимым." исключение, когда я читаю изображение из своей базы данных?[^] может помочь вам разобраться в этом.


Рейтинг:
11

Member 13910887

можете ли вы помочь мне,как это исправить, Теперь я уже извлекаю изображение из БД msql, но
я не знаю, как показать имя изображения, но под ним есть системный байт




Private Sub retrieve()

      ListView2.Items.Clear()
      cn = New MySqlConnection(constr)
      cn.Open()
      cmd = New MySqlCommand
      cmd.Connection = cn
      ' cmd.CommandText = "Select * from category"
      da = New MySqlDataAdapter(cmd)



      Try

          ListView2.Clear()
          Dim imglist As New ImageList
          imglist.ColorDepth = ColorDepth.Depth32Bit
          ListView2.LargeImageList = imglist
          ListView2.LargeImageList.ImageSize = New System.Drawing.Size(100, 100)
          constr = "select * from items"

          Dim dt_images As New DataTable

          '   cmd.Connection = cn
          cmd.CommandText = constr
          da.SelectCommand = cmd

          da.Fill(dt_images)
          For Each dr As DataRow In dt_images.Rows
              Dim img_buffer = CType(dr("IMAGE"), Byte())

              Dim img_stream As New MemoryStream(img_buffer, True)

              img_stream.Write(img_buffer, 0, img_buffer.Length)
              imglist.Images.Add(dr("ID").ToString(), New Bitmap(img_stream))
              img_stream.Close()

              Dim lsvparent As New ListViewItem

              lsvparent.Text = dr("IMAGE").ToString     'if you remove it the system byte will remove to or hide
              lsvparent.ImageKey = dr("ID").ToString       ' if you remoce it the image will hide

              ListView2.Items.Add(lsvparent)
          Next
      Catch ex As Exception
          MsgBox(ex.Message)

      End Try
  End Sub


Рейтинг:
0

RickZeeland

Смотрите код, упомянутый в разделе "Поиск" здесь: Сохранение и извлечение изображения из базы данных с помощью VB.Net и MySQL[^]

Конечно, вам понадобится цикл, чтобы пересечь ваш datatable или dataset и получить все изображения, я не смог найти пример с изображениями, но вот цикл, который читает элементы listview:
VB.NET добавление элементов в ListView из базы данных MySQL с помощью DataSet | KODE AJAIB[^]

А вот пример, который показывает, как добавить изображения в listview: Как добавить изображения в ListView с помощью VB.Net | бесплатный исходный код и учебные пособия[^]


Member 13910887

да, я тоже видел этот код, но этот код предназначен для поиска, но я ищу, как получить все изображение из mysql и вставить его в listview

RickZeeland

Непонятный заголовок, но он показывает, как загрузить изображение:
Pic1.Изображение = Изображение.FromStream(mstream)
Остальное зависит от вас :)

Member 13910887

я ищу, как listview получить все изображения из базы данных