在使用C#的oledb连接Access数据库时,使用事务来对数据库进行数据增加和修改,前面的insert语句都可以正常执行,而到Update更新表格数据时,程序出现了“不能打开数据库,应用程序可能无法识别该数据库。。。”的错误。
由于之前使用update更新数据库数据时没有出现这个错误,所以从以下几个方面对程序和数据库进行了检查:
1.检查update语句是否出现了错误,通过调试将update字符串拷贝出来,直接在数据库中运行,运行正常,排除了语句的语法错误;
2.检查连接字符串是否有问题,由于在update语句之前的insert语句执行正常,而只有update才出现错误,因此排除了连接字符串错误;
3.检查是否是因为数据库加了密码造成该错误,通过取消数据库密码,继续运行,发现该错误仍然存在;
4.检查数据库中是不是设置了什么访问权限,造成程序无法拥有数据库的完全访问权,检查后仍然没发现问题;
5.找到以前备份的运行正常的较早的程序,运行后仍然出现错误,因此猜测可能是系统问题或是共有方面的问题;
6.最后想起来开机后,360安全卫士为了预防当前比较流行的“勒索软件”的那个病毒,对系统做了升级打了补丁,怀疑是不是这样引起的,因此把360安全卫士关闭,重新运行程序,发现不再出现错误;重新对数据库设置密码,更改连接字符串,运行程序,程序依然运行正常。因此,基本可以确定,可能是360软件对access数据库采取了什么保护错误,使得程序读取access数据库时,出现了“不能打开数据库,应用程序无法识别该数据库”的错误。
又反复测试了几次,发现该问题的原因正是360运行,对数据库采取了一定的保护措施,致使程序无法打开数据库。将360退出后,再运行程序进行测试,发现错误不再出现。
结论:安全、防病毒软件对数据库的保护,可能造成编程软件无法正常有效的访问数据库文件。