0

VB.Net我正在使用 Access 数据库制作带有图片的注册表单。使用以下代码,我收到错误消息。

Me.Student_instructorTableAdapter.Insert(txtname,txtpass, ***PictureBox1.Image***)
Me.Student_instructorTableAdapter.Fill(Me.DatabaseDataSet4.student_instructor)

MsgBox("Successfully added", MsgBoxStyle.Information)

PictureBox1.Image正在保存到引发错误的 Access 数据库(“图片”)中:

“System.Drawing.Image”无法转换为“一维数组”

为了避免异常PictureBox1.Image,我应该在调用时使用什么来代替?Insert

4

1 回答 1

2

(应该是评论,但我需要发布代码)

我们需要完整的异常消息来确切地知道它期望什么(什么的一维数组?)很可能它是一个字节数组。

如果是这样,您可以像这样将图像转换为字节数组...

Public Function ImageToByteArray(imageIn As System.Drawing.Image) As Byte()
    Dim ms As New MemoryStream()
    imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
    Return ms.ToArray()
End Function

您可以将 Byte 数组转换回这样的图像...

Public Function byteArrayToImage(byteArrayIn As Byte()) As Image
    Dim ms As New MemoryStream(byteArrayIn)
    Dim returnImage As Image = Image.FromStream(ms)
    Return returnImage
End Function

请参阅此处了解更多信息

我不熟悉访问数据类型,因此它可能直接支持图像。如果是这样,您需要确保为该列/字段选择了正确的数据类型。

顺便说一句,如果您不必这样做,请不要将 Access(或至少存储引擎/JET)用于新项目 - 它速度慢,超过 10 个用户时不可靠,并且存在严重的安全问题。如果您不想要完整的 SQL Server 数据库,请考虑使用 SQL Compact Edition (CE) 或 SQL Express。

于 2013-08-25T11:07:55.163 回答