Невозможно привести объект типа «System.Byte []» к типу «System.IConvertible» при обновлении изображения в базу данных MySQL. - PullRequest
0 голосов
/ 12 февраля 2020

У меня проблемы с обновлением изображений в моей базе данных в MySQL.

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

Я могу просто добавлять и удалять изображения, но проблема в том, что когда я пытаюсь обновить любое изображение, я получаю ошибку "Невозможно привести объект типа 'System.Byte []' к типу ' System.IConvertible '".

Я посмотрел его, и он как-то связан с передачей массива байтов в один байт, что невозможно.

Вот мой код обновите изображение:

Dim filesize As UInteger

Dim imgcliente As New MemoryStream
PictureBox1.Image.Save(imgcliente, PictureBox1.Image.RawFormat)

Dim arrImage As Byte() = imgcliente.GetBuffer
filesize = imgcliente.Length
imgcliente.Close()

А вот мой код для извлечения связанного изображения из идентификатора:

cmd = New MySqlCommand("SELECT Imagem_Cliente FROM adegages.clientes WHERE ID_Cliente='" & cmb_cliente.Text & "'", con)

Dim imagedata As Byte() = DirectCast(cmd.ExecuteScalar(), Byte())

If Not imagedata Is Nothing Then
    Using ms As New System.IO.MemoryStream(imagedata, 0, imagedata.Length)
        ms.Write(imagedata, 0, imagedata.Length)
        PictureBox1.Image = New Bitmap(Image.FromStream(ms, True))
    End Using
End If

Возможно, это просто какая-то строка, и ее может быть невероятно легко решить, но Я просто не могу понять, где я ошибаюсь.

Спасибо заранее

Редактировать:

Это код для редактирования записей в базе данных

Dim atualizar_vendas As New MySqlCommand("UPDATE vendas SET ID_Venda=@ID, 
  Cliente_Venda=@CLIENTE, Data_Venda=@DATA, Qnt_Vinho_Venda=@QNT, 
  Tipo_Casta_Venda=@TIPO_CASTA, Nome_Casta_Venda=@NOME_CASTA, 
  Total_Venda=@TOTAL, Imagem_Cliente=@IMG WHERE ID_Venda = @ID", con)

        atualizar_vendas.Parameters.Add("@ID", MySqlDbType.Int32).Value = txt_id_venda.Text
        atualizar_vendas.Parameters.Add("@CLIENTE", MySqlDbType.VarChar).Value = cmb_cliente.Text
        atualizar_vendas.Parameters.Add("@DATA", MySqlDbType.VarChar).Value = mtx_data_venda.Text
        atualizar_vendas.Parameters.Add("@QNT", MySqlDbType.VarChar).Value = txt_qnt_vendida.Text
        atualizar_vendas.Parameters.Add("@TIPO_CASTA", MySqlDbType.VarChar).Value = cmb_tipo_casta.Text
        atualizar_vendas.Parameters.Add("@NOME_CASTA", MySqlDbType.VarChar).Value = cmb_nome_casta.Text
        atualizar_vendas.Parameters.Add("@TOTAL", MySqlDbType.VarChar).Value = txt_total.Text
        atualizar_vendas.Parameters.Add("@IMG", MySqlDbType.Int32).Value = arrImage

        Try
            con.Open()
            If atualizar_vendas.ExecuteNonQuery() > 0 Then
                MsgBox("Editado com sucesso!", MsgBoxStyle.Information, "AdegaGes")
                Limpar()
            End If

            con.Close()

            Retrieve_Clientes()
            Retrieve_Tipo_Casta()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "AdegaGes")
            con.Close()
        Finally
            con.Dispose()
            cmd.Dispose()
        End Try

1 Ответ

0 голосов
/ 12 февраля 2020

Посмотрите на это:

atualizar_vendas.Parameters.Add("@IMG", MySqlDbType.Int32).Value = arrImage

Этот параметр запрашивает одно целое число, а не байтовый массив. Вы, вероятно, хотите вместо этого MySqlDbType.Blob.

...