为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:达梦8
【操作系统】:Windows11
【CPU】:12500H
【问题描述】*:
在Windows平台,当我第二次链接数据库的时候会报错(第一次链接的时候是正常的)。提示在libeay32.dll这里出错。在再次链接时我尝试清理了QSqlDatabase m_dbHandle类型的成员变量,但是没有作用。这应该是一个资源管控问题,奇怪的是我相同的QT代码在Ubuntu下是正常的(Ubuntu平台使用的是UnixODBC驱动)。
另外我的调试信息显示:QSqlDatabasePrivate::removeDatabase: connection 'ODBCCnn_0' is still in use, all queries will cease to work.是的,当我关闭这个链接的时候,似乎这个资源没有正确释放。
我想问问,在windows平台 libeay32.dll这个动态库处理数据库链接是什么样的逻辑。正常的操作流程应该是什么,才能保证在程序中多次打开和关闭数据库链接,而不是只能打开一次。
QSqlDatabasePrivate::removeDatabase: connection 'ODBCCnn_0' is still in use, all queries will cease to work.
一般出现在多次adddatabase都用的同一个connectionname,前一个没释放后一个再创建就会挤掉之前的连接,区分开就行,用QSqlDatabase::contains("连接名")判断当前是否已存在某个连接名,存在就别添加连接了
libeay32这个,这是win上的加密库,出问题一般原因就是同名动态库冲突,这个要注意dm连接阶段应该要引用达梦bin下的libeay32.dll,用windbg调试看看现在调用的哪个文件
您好 能不能提供一个可复现的demo分析一下