You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DevExpress图片框中的图片存入SQL Server数据库

将DevExpress图片框中的图片保存到SQL Server数据库的步骤

首先得明确:你找到的ByteToImage函数是从数据库读取二进制数据后转成Bitmap用于显示的,而你现在要做的是把图片转成二进制存进数据库,需要的是反向的转换逻辑,下面把你的疑问和完整流程讲清楚:

1. ByteToImage的参数说明

这个函数要求传入的是Byte类型数组(Byte()),也就是图片文件的二进制字节流——比如你从SQL Server的varbinary(max)字段读出来的就是这种数组,传入后就能转成Bitmap显示在图片框里。但这一步是读取数据时用的,不是保存时用的。

2. 把图片转成二进制数组(保存到数据库的关键)

你已经拿到了图片路径filename,可以直接用下面的代码把图片转成Byte数组:

' 从文件路径读取图片的二进制数据
Dim imageBytes() As Byte = System.IO.File.ReadAllBytes(filename)

如果不想用路径,直接从DevExpress的PictureEdit控件取当前显示的图片:

' 从PictureEdit控件获取Image对象,转成二进制数组
Using ms As New System.IO.MemoryStream()
    userPicture.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Png) ' 可根据需求选Jpeg/Png等格式
    Dim imageBytes() As Byte = ms.ToArray()
End Using

3. 将二进制数组存入SQL Server

用参数化查询把数据存进去,避免SQL注入,示例代码:

Dim connString As String = "你的SQL Server连接字符串"
Using conn As New SqlClient.SqlConnection(connString)
    conn.Open()
    Dim sql As String = "INSERT INTO 目标表名 (图片字段名) VALUES (@ImageData)"
    Using cmd As New SqlClient.SqlCommand(sql, conn)
        ' 添加参数,指定类型为VarBinary
        cmd.Parameters.Add("@ImageData", SqlDbType.VarBinary, -1).Value = imageBytes
        cmd.ExecuteNonQuery()
    End Using
End Using

4. 后续从数据库读取显示时用到ByteToImage

如果之后要把数据库里的图片读出来显示在PictureEdit里,就用你这个函数:

' 从数据库读取二进制数组(示例)
Dim imageBytes() As Byte = DirectCast(reader("图片字段名"), Byte())
' 调用ByteToImage转成Bitmap
Dim img As Bitmap = ByteToImage(imageBytes)
' 赋值给PictureEdit
userPicture.Image = img

另外,你的ByteToImage函数可以优化下,用Using自动释放MemoryStream:

Public Function ByteToImage(ByVal blob() As Byte) As Bitmap
    Using mStream As New MemoryStream(blob)
        Return New Bitmap(mStream, False)
    End Using
End Function

内容的提问来源于stack exchange,提问作者Clamont

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 15:42:18