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

使用VB.Net将图片存入SQLite Blob字段时遇数据未插入问题

VB.Net写入SQLite Blob字段无数据插入问题排查

问题根源分析

  1. 连接字符串路径错误:Application.StartupPath后缺少路径分隔符\,导致实际操作的是自动创建的空数据库文件(而非目标Database1.db),插入操作看似执行但未写入到预期数据库中。
  2. 未显式提交事务:SQLite默认需要显式提交事务,隐式事务可能因资源未正确释放导致回滚。
  3. 资源未正确释放:未使用Using语句管理连接和命令对象,可能引发资源泄漏或隐式回滚。

修正后的代码

Private Sub btnProcessSingle_Click(sender As Object, e As EventArgs) Handles btnProcessSingle.Click
    Dim data() As Byte = File.ReadAllBytes(txtFileName.Text)
    Dim connectionString As String = $"DataSource={Application.StartupPath}\Database1.db;Version=3"

    Using sqlite_conn As New SQLiteConnection(connectionString)
        sqlite_conn.Open()
        Using sqlite_cmd As New SQLiteCommand(sqlite_conn)
            sqlite_cmd.CommandText = "INSERT INTO PHOTO(Award_No, Photo) VALUES('2022-001', @img)"
            sqlite_cmd.Parameters.Add("@img", DbType.Binary).Value = data

            ' 显式开启并提交事务,确保数据持久化
            Using trans As SQLiteTransaction = sqlite_conn.BeginTransaction()
                sqlite_cmd.ExecuteNonQuery()
                trans.Commit()
            End Using
        End Using
    End Using

    txtFileName.Text = ""
End Sub

关键修复点

  • 补全连接字符串的路径分隔符,确保操作目标数据库文件
  • 使用Using语句自动管理连接、命令和事务资源,避免泄漏
  • 显式提交事务,强制将插入操作写入数据库
  • 移除不必要的Prepare()调用,SQLiteCommand会自动处理参数准备

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:39:53