向Access数据库插入数据时遇见的小小问题

23 篇文章 0 订阅

记得前一次用Access数据库已是多年前的事了,那时还在学校混日子。

这次,由于一个实验性的小项目,再次接触Access数据库(Access2007)。在使用Access数据库的过程中,遇见一个小小的问题,问题虽小,但是很纠结。

问题就是:我在Debug模式下,向Access数据库插入数时,数据明明插入成功了(因为界面刷新时重新获取的数据中已经包含此条数据了,且单步跟踪代码时,ExecuteNonQuery()方法返回值也为1,说明插入成功了),但是停止Debug后,再次启动程序,发现数据并没有被插入,因为界面刷新时获取的数据源中并不包含此条数据,查看数据库文件,发现也没有此条记录。

问题调查:通过代码跟踪及对数据库连接等对象值的监视,发现不存在任何异常之处,也就是说数据应该是成功插入了。这下子让哥纠结了,问题到底出在哪里呢。

问题解决:通过查阅资料发现,在VS的Debug模式下调试程序时,VS都会从指定的目录拷贝一份Access数据库文件到Debug目录下面,而真正被修改数据的也是Debug下面的那个数据库文件。所以就出现了前面所描述的现象,每次调试时显示插入成功,但是退出Debug环境再进入时就不行了,那是因为再次进入时,VS会再次从指定的目录拷贝一份Access数据库文件到Debug目录下面,所以数据还是以前的,没有发生改变。另外,直接运行Debug下面的exe文件会发现一切正常,因为这时不会导致VS的拷贝发生。

那这个问题怎么解决的呢,我是将数据库的链接地址改为了一个绝对地址就可以了。

刚开始:

  <add name="AccountBookConnectionString" 
       connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\Data\accountbook.accdb;Persist Security Info=True"
    providerName="System.Data.OleDb" />
  </connectionStrings>

修改后:

  <add name="AccountBookConnectionString" 
       connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\MyWork\project\201307\SmallAccountBook\SmallAccountBook\SmallAccountBook\Data\accountbook.accdb;Persist Security Info=True"
    providerName="System.Data.OleDb" />
  </connectionStrings>

我个人认为,修改成绝对地址后,VS每次就会访问绝对地址所指的数据库文件,尽管拷贝操作还会进行(通过实验,发现仍会拷贝一份数据库文件至Debug目录下面,但是应该不会对其进行操作)。

问题虽小,但是有点纠结。呵呵,还是不熟悉导致的,看来还是得多实验多总结啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值