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

VB.NET本地数据库插入记录重启后丢失无法永久保存

问题根因

你遇到的是VS开发文件型本地数据库的经典问题,和插入代码本身执行逻辑无关,核心原因如下:

  • 90%以上的同类问题都是数据库文件的复制配置错误:如果你用的是LocalDB(.mdf)、Access(.mdb/.accdb)、SQLite(.db)这类文件型数据库,且在VS项目中把数据库文件的「复制到输出目录」属性设为了始终复制,每次启动程序调试时,VS会自动把项目根目录下的原始空数据库,覆盖掉程序运行目录(bin\Debug或bin\Release)下的工作数据库。你运行时插入的数据都写入了工作目录的临时库副本,所以当前进程内绑定的DataGridView能正常读到新记录,但下次启动时旧的工作库被原始文件覆盖,之前写入的数据自然全部丢失。
  • 次要诱因:你的现有插入代码存在两个隐患,极端场景下也会导致数据丢失:一是用字符串拼接SQL,没有用参数化查询,遇到输入内容带单引号时会隐式插入失败;二是没有用Using块释放数据库资源,极端情况下写入缓冲区的数据不会被刷新到磁盘文件。
修复步骤
  1. 修正数据库文件的复制规则
    • 在VS右侧解决方案资源管理器中找到你的本地数据库文件,点击选中
    • 按F4调出属性面板,找到「复制到输出目录」配置项,将默认值从「始终复制」改为如果较新则复制——这个配置下VS只会在你手动修改了项目根目录的原始数据库时才会覆盖工作目录的库,日常调试运行不会清空你插入的测试数据。
    • 注意:验证数据是否持久化成功时,要连接bin\Debug对应运行目录下的数据库文件查看,不要直接打开项目根目录下的原始库检查。
  2. 重构插入代码,解决安全和资源泄漏问题
    替换原有字符串拼接的写法,改用参数化查询+Using块自动释放数据库资源,参考实现如下:
' Using块会在代码块结束时自动释放连接、命令对象,无需手动调用Close/Dispose
Using conn As New SqlConnection("你的项目实际数据库连接字符串")
    conn.Open()
    Using comm As SqlCommand = conn.CreateCommand()
        ' 用参数占位符替代字符串拼接,彻底避免SQL注入和特殊字符报错问题
        comm.CommandText = "INSERT INTO tblServices VALUES(@ServiceID, @Description, @Quantity, @Price, @Remarks, @Status)"
        ' 可根据字段实际类型调整参数类型,以下为通用示例
        comm.Parameters.AddWithValue("@ServiceID", txtServiceID.Text.Trim())
        comm.Parameters.AddWithValue("@Description", txtDescription.Text.Trim())
        comm.Parameters.AddWithValue("@Quantity", CInt(txtQuantity.Text.Trim()))
        comm.Parameters.AddWithValue("@Price", CDec(txtPrice.Text.Trim()))
        comm.Parameters.AddWithValue("@Remarks", txtRemarks.Text.Trim())
        comm.Parameters.AddWithValue("@Status", 1)
        ' 执行插入,返回值为受影响行数,等于1即代表插入成功
        Dim affectRows As Integer = comm.ExecuteNonQuery()
    End Using
End Using

如果你使用的是Access数据库,OleDb提供程序不按参数名匹配值,只按参数添加的顺序对应表字段,保证参数添加顺序和INSERT语句的字段顺序完全一致即可。

  1. 补充排查项
    • 检查数据库连接字符串,确认配置的是相对路径,指向程序运行目录下的数据库文件,不要写死本地绝对路径
    • 如果你在代码中显式开启了数据库事务,记得插入执行完成后调用Commit()方法提交事务,否则程序退出时事务会自动回滚,数据不会写入。

内容的提问来源于stack exchange,提问作者Domingo M. Caya Jr.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:39:29