Как получить несколько изображений из mysql в список изображений в vb.net - PullRequest
1 голос
/ 17 июня 2020

Я хочу получить несколько изображений из базы данных MySQL, которые будут добавлены в коллекцию списка изображений после загрузки моей формы.

То, что я пробовал в событии загрузки формы:

cn.Open()
  Using cmd = New MySqlCommand("SELECT * FROM tbl_products", cn)
    da.SelectCommand = cmd
    Dim dt_images As New DataTable
    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("image").ToString(), New Bitmap(img_stream))
      img_stream.Close()
    Next
  End Using
cn.Close()

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Во-первых, как показано в вашем коде, столбец, в котором хранятся изображения, называется (IMAGE), он должен иметь тип данных OLE Object

Во-вторых, в этой строке:

imglist.Images.Add(dr("image").ToString(), New Bitmap(img_stream))

dr ("image") - это строка ключа изображения, а не столбец, содержащий изображение, поэтому я предлагаю вам создать новый столбец в базе данных с именем, например (RankID), который имеет тип данных (autonumber), а затем изменит эту строку на:

imglist.Images.Add(dr("RankID").ToString(), New Bitmap(img_stream))

Наконец, вы просто добавляете изображения в список изображений, вам нужен список для его отображения. создайте новый список (listview1), затем добавьте эти строки внутри вашего для каждого l oop:

Dim isvparent As New ListViewItem
isvparent.ImageKey = myrow("RankID")
ListView1.Items.Add(isvparent)
0 голосов
/ 17 июня 2020
Using connection As New MySqlConnection("connection string here"),
      command As New MySqlCommand("SELECT image FROM tbl_products", connection)
    connection.Open()

    Using reader = command.ExecuteReader()
        While reader.Read()
            Using stream As New MemoryStream(DirectCast(reader("image"), Byte()))
                imglist.Images.Add(Image.FromStream(stream))
            End Using
        End While
    End Using
End Using
...