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

为什么向数据库插入的数据仅在程序运行期间可见?

问题产生的核心原因按出现概率从高到低排列如下:

  • Visual Studio 数据库文件复制策略问题(90%以上概率)
    你项目中引入的.mdf数据库文件,默认的「复制到输出目录」属性为如果较新则复制或始终复制。程序运行时实际操作的是bin/Debug或bin/Release输出目录下的临时数据库副本,每次重新启动程序时,VS都会将项目根目录下的原始空白数据库文件覆盖到输出目录,所以运行时插入的数据在程序关闭后就会被清空。
    你可以右键点击项目中的数据库文件,选择「属性」,将「复制到输出目录」修改为如果较新则复制(不需要覆盖的场景可以直接改成「不复制」,注意后续手动同步数据库结构)即可解决。
  • 连接字符串指向不一致
    检查你代码中ConfigurationManager读取的连接字符串,和playersTableAdapter使用的连接字符串是否指向同一个物理数据库文件,避免出现运行时写入的是临时库,你手动查看的是项目原始库的情况。
  • 事务未提交(低概率)
    你当前的插入代码没有显式开启事务,默认是自动提交状态,所以这个问题不存在,但如果你的项目全局配置了隐式事务未手动提交,也会出现数据写入后回滚的情况。
  • SQL Server Express 用户实例模式问题
    如果你的连接字符串启用了User Instance=True参数,SQL Server Express会为每次程序运行生成独立的临时用户实例,程序关闭后实例销毁,数据自然不会持久化。

注:你代码中插入语句使用ExecuteScalar()属于用法不规范,插入操作应该调用ExecuteNonQuery(),但这个不影响数据写入的结果,不是本次问题的诱因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 17:27:02