我在MySQL中将图像更新到数据库中时遇到问题。
我正在使用组合框选择用户 ID,并使用该 ID 和与图片框上的该 ID 关联的图像填充该组合框
我可以很好地添加和删除图像,但是问题是当我尝试更新任何图像时,我收到错误" 无法将类型'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()
这是我从 ID 中检索关联图像的代码:
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
看看这个:
atualizar_vendas.Parameters.Add("@IMG", MySqlDbType.Int32).Value = arrImage
该参数请求单个整数,而不是字节数组。你可能希望MySqlDbType.Blob
那里。