暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

C#-MySql与Oracle(ORA-12516)填坑日志-1

数字化设备人 2021-05-06
513

事情发生在用C#将本地Oracle数据库上传到阿里云数据库的过程中。

可参考之前文章:微信小程序-小程序云开发操作阿里云mysql数据库实现手机端信息展示


我向阿里云中插入数据时,MySql一直报错,错误信息如下:


MySql.Data.MySqlClient.MySqlException: There is already an open DataReader associated with this Connection which must be closed first.


窗体加载时,建立数据库连接并打开。以为只用建立一次连接就可以。

(如果每次查询时都生成新连接的话不会存在这个问题,但那样数据库占用的资源相对会高很多)每个线程中都sqlCom方法。在这个执行过程中,就产生了上面所述的错误。



当初之所以这样写,是参照着当时写的Oracle操作的类。


      但是对于Oracle来说,如果使用了方案-2,则在执行过程中,如果多次调用方法,比如for循环中,则有可能会出现错误 

ORA-12516 "TNS监听程序找不到符合协议堆栈要求的可用处理程序" 


    原因就是oracle的会话数超出了限制,一般都是由于多次connect建立多个连接会话引起的,最后导致oracle无法响应新的请求,从而出现ora-12516错误。对于这种情况,我们可以采用方案-1的方法,在窗体加载时,直接打开数据库连接。在整个程序生命周期中,只建立一次连接。


文章转载自数字化设备人,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论