解决C#运行程序修改数据后数据表不做更新的问题

简介: 解决C#运行程序修改数据后数据表不做更新的问题

前言

近日,在使用C#连接数据库的时候,对数据库中的表做更新后,在当前启动项目中去显示表数据时虽然会发生一个更新,但是在结束程序运行后再去观察数据表中的记录时发现并没有发生一个变化,在重复尝试了好几次后还是同样的结果,于是就开始了我的查错之旅~

现象观察

现在的场景是对一个学生信息去做一个增删查改

  • 下面是原数据表Student中的记录

image.png

  • 然后我点击【增加】按钮后会弹出框让用户输入需要添加的学生信息

image.png

  • 当操作后再去点击【显示表数据】后,就可以发现当前数据表中已经多出了一条记录

image.png

  • 然后我在结束程序后去查看Student数据表的时候发现并数据表中的记录并没有做一个同步的更新,再想可能要手动刷新一下才行,于是点击了左上角的【刷新】后发现依旧是这幅模样,还是和之前一样的9条记录,这是为什么呢???我便感觉到很疑惑

image.png

想到可能是出了BUG吧,于是又开启程序进行操作~

  • 但是当我先点击【显示表数据】想要查看一下数据表中的信息时,却发现程序运行起来是做了更新的,但是数据表中却没有做更新,导致了两边不同步的情况,这就让我百思不得其解(・∀・(・∀・(・∀・*)

image.png

问题思考

于是我就开始思考🤔既然两边的数据都不一致的话,那么这会不会就是就是两张数据表呢👈

  • 经过我不断地搜寻资料、询问老师和同学、查看各种博客下,终于验证了我的猜测!!!
  • 这真的是两张不同的数据表,当我们去运行程序的时候,默认是在DeBug环境底下去进行的,所以我们连接到的是bin\Debug下的数据库文件,而不是项目根目录下的数据库文件

image.png

  • 也就是说我们在运行程序的时候,其实一直在更改bin\Debug文件下的数据库文件,所以在下一次运行起来后所查询的也是这个数据库,而根目录下的Database.mdf数据库文件却一直没有被动过,所以没更新是正常的

解决问题

接下去我们就来解决一下这个问题

  • 步骤很简单,只需要设置一下当前你工程下的.mdf结尾的数据库文件属性即可

image.png

  • 对于复制到输出目录这个属性的默认值为【始终复制】,我们将其改为【不复制】即可

image.png

  • 还有一点,有的同学可能会遇到下面这样的情况,如果你设置的属性值为【如果较新则复制】,此时在运行程序后就会出现如下的情况,出现正由另一进程使用,因此该进程无法访问此文件,然后项目被不断地重启,不过最多不会超过10次
  • 这就是因为你正在运行bin\DeBug目录下的【.mdf】数据库文件,此时发现两边的数据库信息不一致,编译器就会选择去做一个更新,那么机会和根目录下的【.mdf】文件冲突了,两个进程所使用的端口号是一直的, 这类似于我们在启动Tomcat服务器出现端口号占用的情况

image.png

  • 还有一点就是你一定要保证你的数据库连接字符串所寻找的数据库文件[Database1.mdf]是正确的
// 创建一个数据库连接字符串
string connectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=D:\\code\\c-sharp\\实验\\实验4\\学生成绩增删查改\\学生成绩增删查改\\Database1.mdf;Integrated Security=True";
  • 接下去我们再运行程序进行数据表的修改时就发现数据库中的学生表发生了同步的更新👈

image.png

相关文章
|
3月前
|
缓存 C# Windows
C#程序如何编译成Native代码
【10月更文挑战第15天】在C#中,可以通过.NET Native和第三方工具(如Ngen.exe)将程序编译成Native代码,以提升性能和启动速度。.NET Native适用于UWP应用,而Ngen.exe则通过预编译托管程序集为本地机器代码来加速启动。不过,这些方法也可能增加编译时间和部署复杂度。
202 2
|
2天前
|
C# 开发工具 C++
code runner 运行C#项目
本文介绍了如何修改Code Runner设置使 Visual Studio Code (VS Code) 能直接运行完整的 C# 项目。传统方式依赖 cscript 工具,仅支持 .csx 文件,功能受限且已停止维护。新配置使用 `dotnet run` 命令,结合一系列炫酷的cmd指令,将指令定位到具体的csproj文件上进行运行。
63 38
|
15天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
32 11
|
17天前
|
Linux C# iOS开发
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
46 12
|
17天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
42 10
|
1月前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
111 13
|
3月前
|
SQL 缓存 分布式计算
C#如何处理上亿级数据的查询效率
C#如何处理上亿级数据的查询效率
57 1
|
3月前
|
设计模式 程序员 C#
C# 使用 WinForm MDI 模式管理多个子窗体程序的详细步骤
WinForm MDI 模式就像是有超能力一般,让多个子窗体井然有序地排列在一个主窗体之下,既美观又实用。不过,也要小心管理好子窗体们的生命周期哦,否则一不小心就会出现一些意想不到的小bug
294 0
|
3月前
|
中间件 数据库连接 API
C#数据分表核心代码
C#数据分表核心代码
52 0
|
3月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
164 0