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

VB.NET向MySQL插入Blob图片时触发Fatal Error问题求助

解决VB.NET插入MySQL Blob字段时的致命错误问题

你遇到的问题核心是Blob字段写入失败,去掉图片列后正常执行,说明问题出在图片数据的处理或数据库配置上,以下是针对性的排查和解决步骤:

1. 确认数据库字段类型

Resim字段如果用的是BLOB类型,最大仅能存储64KB数据,绝大多数图片都会超过这个限制,直接导致写入时触发致命错误。请将字段类型修改为**LONGBLOB**(最大支持4GB存储),这是此类问题最常见的诱因。

2. 修正MemoryStream的使用方式

当前代码未正确处理MemoryStream资源,且直接使用RawFormat可能引发格式兼容问题,建议改用Using语句自动释放资源,并强制转换为通用图片格式(如PNG):

Public Sub StokKartiKayit()
    Try
        BaglantiKontrol()

        Dim StokAd As String = StokKartiTanimForm.txtStokAdi.Text.ToUpper
        
        ' 先判断图片是否存在,避免空引用错误
        If StokKartiTanimForm.PictureBox1.Image Is Nothing Then
            MsgBox("Lütfen bir resim seçiniz!", vbExclamation, "MoTap")
            Return
        End If

        ' 使用Using语句自动释放MemoryStream资源
        Using ms As New MemoryStream()
            ' 强制保存为PNG格式,规避RawFormat的兼容问题
            StokKartiTanimForm.PictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Png)
            ms.Position = 0 ' 重置流位置到开头(好习惯,避免潜在问题)

            cmd = New MySqlCommand("INSERT INTO stok_karti_tbl (KategoriID,ParcaID,StokAdi,Resim) Values(@Kategori,@Parca,@Stok,@img)", con)
            cmd.Parameters.Add("@Kategori", MySqlDbType.Int32).Value = UrunKategoriID
            cmd.Parameters.Add("@Parca", MySqlDbType.Int32).Value = ParcaID
            cmd.Parameters.Add("@Stok", MySqlDbType.VarChar).Value = StokAd
            cmd.Parameters.Add("@img", MySqlDbType.LongBlob).Value = ms.ToArray()

            con.Open()

            If cmd.ExecuteNonQuery() = 1 Then
                MsgBox("Stok Kartı Bilgileri Kayıt Edilmiştir...", vbInformation, "MoTap")
            Else
                MsgBox("Kayıt İşleminde Sorun Oluştu...", vbCritical, "MoTap")
            End If

            con.Close()
        End Using

    Catch ex As Exception
        ' 输出完整异常信息,包含堆栈跟踪,方便精准定位问题
        MsgBox(ex.ToString(), vbCritical, "Hata Detayı")
    End Try
End Sub

3. 调整MySQL连接字符串配置

默认的MySQL连接字符串可能限制了数据包大小,导致大Blob无法传输。请在连接字符串中添加数据包大小配置(示例为10MB,可根据图片实际大小调整):

Server=你的服务器地址;Database=你的数据库名;Uid=用户名;Pwd=密码;Max Packet Size=10485760;

4. 验证图片数据合法性

  • 确认图片文件未损坏,可尝试用画图工具重新保存图片后再测试
  • 避免使用ICO、WMF等特殊格式,优先选择PNG/JPG这类通用图片格式

内容的提问来源于stack exchange,提问作者mehmet çelik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:40:38