Oracle.ManagedDataAccess.dll折腾了我两天
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle.ManagedDataAccess.dll折腾了我两天,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1377字,纯文字阅读大概需要2分钟。
内容图文
![Oracle.ManagedDataAccess.dll折腾了我两天](/upload/InfoBanner/zyjiaocheng/859/92b6eb7fa92c4daba1379990cd9635f2.jpg)
有个C#写的数据采集程序,我们负责把本地mysql数据库的数据周期性(5分钟)往Oracle数据库中插入数据。
我使用的是OracleDataAdapter.update操作上传的,同时使用了OracleCommandBuilder对象。
以前运行正常,这几天对方把表中的字段类型修改了,从varchar改成date了,我这边程序也可处理一下,然后问题来了:
总是出现 “空引用” 错误,由于我本地无法连接Oracle数据库,我只能在本地修改,然后把程序上传到数据库上运行。
程序会同时上传到两个表,我几乎逐句加日志(写日志表),最后得到结论,插入一个表时正常,另一个表时出“空引用”,并且是OracleDataAdapter.update这条语句触发的异常。而写入数据库操作是一个公用的函数,即两次插入调用的同一个函数,参数不一样。但成功的表插入数据少一些100条,失败的插入多一些600条左右(当时并未意识到数据多少的问题)。
最后没有办法,在服务器上安装了vs开发环境,单步跟踪,发觉两个插入全部执行成功,没有什么异常。但正常运行时又出“空引用”异常。
后来改为Relese编译发布,好像运行不出错了。但后来又出错了。
后来不知怎么想到把 UpdateBatchSize 改小一点试试,改成10吧,一试真好使,全部成功,无论Release还是Debug全部成功
至此,已定位出问题所在,把 UpdateBatchSize=100程序恢复正常。
前面单步跟踪时没有出错,是因为调试时未接收外部数据,造成插入的数据行数较少。
原来的代码UpdateBatchSize=0,因为文档上是说系统自动使用最大可用数量,设置为0时在mssql和mysql中都运行很正常。
Oralce在未修改字段类型前不知为何运行正常,这个也不想再研究了。
感觉是OracleDataAdapter.update的一个bug
内容总结
以上是互联网集市为您收集整理的Oracle.ManagedDataAccess.dll折腾了我两天全部内容,希望文章能够帮你解决Oracle.ManagedDataAccess.dll折腾了我两天所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。