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

 更新时间:2023年08月13日 16:39:46   作者:烽起黎明  
近日,在使用C#连接数据库的时候,对数据库中的表做更新后,在当前启动项目中去显示表数据时虽然会发生一个更新,但是在结束程序运行后再去观察数据表中的记录时发现并没有发生一个变化,所以本文给大家解决一下这个问题,需要的朋友可以参考下

前言

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

现象观察

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

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

问题思考

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

  • 经过我不断地搜寻资料、询问老师和同学、查看各种博客下,终于验证了我的猜测!!!

这真的是两张不同的数据表,当我们去运行程序的时候,默认是在DeBug环境底下去进行的,所以我们连接到的是 bin\Debug 下的数据库文件,而不是项目根目录下的数据库文件

在这里插入图片描述

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

解决问题

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

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

好,到这里本文就结束了,希望能帮助到遇到困难的你

以上就是解决C#运行程序修改数据后数据表不做更新的问题的详细内容,更多关于C#数据表不做更新的资料请关注脚本之家其它相关文章!

相关文章

  • C#实现图片上传(PC端和APP)保存及 跨域上传说明

    C#实现图片上传(PC端和APP)保存及 跨域上传说明

    这篇文章主要介绍了C#实现图片上传(PC端和APP)保存及 跨域上传说明的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • C#获取电脑网卡MAC地址的方法详解

    C#获取电脑网卡MAC地址的方法详解

    MAC地址是网络接口的物理地址,由48位二进制数组成,通常表示为6组十六进制数,本文将详细介绍在C#中如何获取电脑MAC地址的方法,包含完整代码示例和实际开发中的注意事项,需要的朋友可以参考下
    2026-04-04
  • C# 实现WebSocket服务端教程

    C# 实现WebSocket服务端教程

    这篇文章主要介绍了C# 实现WebSocket服务端教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • C#读写指定编码格式的文本文件

    C#读写指定编码格式的文本文件

    这篇文章主要为大家详细介绍了C#读写指定编码格式文本文件的方法,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • unity实现动态排行榜

    unity实现动态排行榜

    这篇文章主要为大家详细介绍了unity实现动态排行榜,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • C# WPF中RadioButton控件的用法及应用场景

    C# WPF中RadioButton控件的用法及应用场景

    在WPF应用程序中,RadioButton控件是一种常用的用户界面元素,本文主要介绍了C# WPF中RadioButton控件的用法及应用场景,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 两路归并的数组与链表的实现方法

    两路归并的数组与链表的实现方法

    本篇文章对两路归并的数组与链表的实现方法进行了分析介绍。需要的朋友参考下
    2013-05-05
  • C#获取项目指定目录下文件的方法

    C#获取项目指定目录下文件的方法

    这篇文章主要介绍了C#获取项目指定目录下文件的方法,涉及C#操作目录及文件的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C# 使用AE获取feature的属性及字段操作

    C# 使用AE获取feature的属性及字段操作

    这篇文章主要介绍了C# 使用AE获取feature的属性及字段操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 基于Avalonia实现自定义弹窗的示例详解

    基于Avalonia实现自定义弹窗的示例详解

    对于使用avalonia的时候某些功能需要到一些提示,比如异常或者成功都需要对用户进行提示,所以需要单独实现弹窗功能,并且可以自定义内部组件,这一期将手动实现一个简单的小弹窗,并且很容易自定义,希望大家喜欢
    2023-02-02

最新评论