c++ - 打开 ODBC 数据库时 Qt 应用程序崩溃

标签 c++ sql qt odbc

我正在开发一个与外部 ODBC 数据库连接的应用程序。 当我在 Qt 上运行它时,一切正常,但当我尝试独立打开时,它总是在 m_db->open() 上崩溃。

当应用程序因这个错误而崩溃时:

Segmentation fault (core dumped)

代码如下:

m_db = new QSqlDatabase(QSqlDatabase::addDatabase("QODBC","edb"));
m_db->setDatabaseName(m_line);
m_db->open(); // <-// app crash here!

地点:

m_line = "Driver=/opt/sqlanywhere12/lib64/libdbodbc12.so;CommLinks=tcpip(Host=ip;port=port);ServerName=db;DatabaseName=db;Uid=uid;Pwd=psswd;"

有人知道吗?

我正在运行 Ubuntu 14.04 64 位。 谢谢,

编辑

好吧,经过更多测试,如果我从 m_line 变量中删除驱动程序配置,它似乎不会崩溃,但很明显,它会停止工作...

EDIT2

从 Qt Creator 配置自定义运行后,它说断点是反汇编程序上的 0x7ffff6a777b9。什么意思?

最佳答案

不是您使用 QSqlDatabase 的方式。 QSqlDatabase 实例是可通过连接名称检索的内部连接句柄,它们不控制连接的生命周期。 所以它应该在 stack 上声明:

m_db = QSqlDatabase::addDatabase("QODBC","edb"));
m_db.setDatabaseName(m_line);     
m_db.open();

关于c++ - 打开 ODBC 数据库时 Qt 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30469497/

相关文章:

c++ - 如何在 QPushButton 悬停时设置高亮

c++ - DirectoryIterator 可能存在的错误

c++ - 本地化测试,用 XXXXX 格式化所有字符串

C++17 - 使用自定义分配器提取/重新插入节点 - 适用于 clang++/libc++ 但不适用于 libstdc++

分区上的 SQL Sum

qt - 警告 : All changes made in this file will be lost

c++ - 在 C++/C 中通配,在 Windows 上

sql - 有没有关于 SQL 架构设计模式的开源资源?

mysql - 我应该在什么时候创建一个单独的表(mysql)?

c++ - 同时从多个流中捕获,最好的方法以及如何减少 CPU 使用率