Qt中如何加入QODBC驱动(linux环境下)

shance3c 2013-01-16 09:47:13
请问各位如何在Qt中加入QODBC驱动,使得Qt能连到Windows的SQL上去
在http://www.unixodbc.org/ 下载了unixODBC-2.3.0.tar.gz
安装之后生成Makefile时使用语句 :
qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "LIBS+=-L/usr/local/unixODBC/lib -lodbc"
之后make也顺利,但是程序中的QStringList drivers = QSqlDatabase::drivers();
还是返回不保括QODBC的字符串,还请大家看看小弟的问题出在哪里 谢谢
...全文
1396 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
不知不觉leoo 2015-02-02
  • 打赏
  • 举报
回复
将你make出来的那个libqsqlodbc.so文件,拷贝到你安装QT的/qt-everywhere-opensource-src-4.8.4/plugins/sqldrivers目录下。测试程序应该就可以识别ODBC了
BenKwan 2013-01-18
  • 打赏
  • 举报
回复
引用 10 楼 shance3c 的回复:
有没有大神知道问题出在哪的啊 急!!
windows下我倒是遇到过这问题的, 我是这样解决的: 目录结构: app-dir: app.exe plugins/sqldirvers/qsqlodbc4.dll 然后在main函数里面调用app.addLibraryPath("./plugins"); 就ok,你试试
shance3c 2013-01-18
  • 打赏
  • 举报
回复
有没有大神知道问题出在哪的啊 急!!
shance3c 2013-01-18
  • 打赏
  • 举报
回复
引用 8 楼 freebendy 的回复:
如果还不行看看文档里面的 QApplication::addLibraryPath
试了下 貌似还是不行啊
shance3c 2013-01-18
  • 打赏
  • 举报
回复
引用 14 楼 freebendy 的回复:
引用 13 楼 shance3c 的回复:引用 11 楼 freebendy 的回复:引用 10 楼 shance3c 的回复:有没有大神知道问题出在哪的啊 急!! windows下我倒是遇到过这问题的, 我是这样解决的: 目录结构: app-dir: app.exe plugins/sqldirvers/qsqlodbc4.dll 然后在mai……
那会改得急了都没注意有那个问题,实在惭愧,不过后面试了下还是不管用,看来得好好理清楚思路再找问题的原因所在了,谢谢你的帮助
BenKwan 2013-01-18
  • 打赏
  • 举报
回复
引用 13 楼 shance3c 的回复:
引用 11 楼 freebendy 的回复:引用 10 楼 shance3c 的回复:有没有大神知道问题出在哪的啊 急!! windows下我倒是遇到过这问题的, 我是这样解决的: 目录结构: app-dir: app.exe plugins/sqldirvers/qsqlodbc4.dll 然后在main函数里面调用app.addLibrary……
有你这样改的?

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    a.addLibraryPath("./plugins");
    MainWindow w;
    w.show();

    qDebug() << "Available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
    qDebug() << "\t" << driver;
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    qDebug() << "ODBC driver valid?" << db.isValid();
    QTextCodec::setCodecForTr(QTextCodec::codecForName("gb2312"));

    
    return a.exec();
} 
shance3c 2013-01-18
  • 打赏
  • 举报
回复
引用 11 楼 freebendy 的回复:
引用 10 楼 shance3c 的回复:有没有大神知道问题出在哪的啊 急!! windows下我倒是遇到过这问题的, 我是这样解决的: 目录结构: app-dir: app.exe plugins/sqldirvers/qsqlodbc4.dll 然后在main函数里面调用app.addLibraryPath("./plugins"); ……
改了之后还是不行
shance3c 2013-01-18
  • 打赏
  • 举报
回复
引用 11 楼 freebendy 的回复:
引用 10 楼 shance3c 的回复:有没有大神知道问题出在哪的啊 急!! windows下我倒是遇到过这问题的, 我是这样解决的: 目录结构: app-dir: app.exe plugins/sqldirvers/qsqlodbc4.dll 然后在main函数里面调用app.addLibraryPath("./plugins"); ……
int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); qDebug() << "Available drivers:"; QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() << "\t" << driver; QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); qDebug() << "ODBC driver valid?" << db.isValid(); QApplication::addLibraryPath("./plugins/sqldrivers"); a.addLibraryPath("./plugins"); QTextCodec::setCodecForTr(QTextCodec::codecForName("gb2312")); return a.exec(); }
shance3c 2013-01-17
  • 打赏
  • 举报
回复
发错表情了 。。。
shance3c 2013-01-17
  • 打赏
  • 举报
回复
自顶一个
BenKwan 2013-01-17
  • 打赏
  • 举报
回复
如果还不行看看文档里面的 QApplication::addLibraryPath
BenKwan 2013-01-17
  • 打赏
  • 举报
回复
引用 6 楼 shance3c 的回复:
对源码重新./configure -qt-sql-odbc -plugin-sql-odbc -I/usr/local/unixODBC/include -L/usr/local/unixODBC/lib 之后还是无法解决这个问题 还是找不到QODBC这个驱动 大家帮帮忙啊
自己编译的Qt?应该是程序找不到qodbc这个驱动,把编译出来的qodbc动态库copy到你自己的程序的可执行文件目录下。你看看能找到不?
shance3c 2013-01-17
  • 打赏
  • 举报
回复
对源码重新./configure -qt-sql-odbc -plugin-sql-odbc -I/usr/local/unixODBC/include -L/usr/local/unixODBC/lib 之后还是无法解决这个问题 还是找不到QODBC这个驱动 大家帮帮忙啊
shance3c 2013-01-17
  • 打赏
  • 举报
回复
引用 3 楼 freebendy 的回复:
引用 楼主 shance3c 的回复:请问各位如何在Qt中加入QODBC驱动,使得Qt能连到Windows的SQL上去 在http://www.unixodbc.org/ 下载了unixODBC-2.3.0.tar.gz 安装之后生成Makefile时使用语句 : qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "L……
之后我又下载了4.8.4版本的qt-everywhere-opensource-src-4.8.4 ./configure + make install 后在qt-everywhere-opensource-src-4.8.4/src/plugins/sqldrivers/odbc下编译了odbc.pro unixODBC是已经安装好了的,make貌似也成功了,没有报错 且在/qt-everywhere-opensource-src-4.8.4/plugins/sqldrivers下有了新的 libqsqlodbc.so 之前里面只有 libqsqlite.so 但是程序运行发现还是找不到ODBC驱动: Available drivers: "QSQLITE" QSqlDatabase: QODBC driver not loaded QSqlDatabase: available drivers: QSQLITE ODBC driver valid? false
shance3c 2013-01-17
  • 打赏
  • 举报
回复
引用 3 楼 freebendy 的回复:
引用 楼主 shance3c 的回复:请问各位如何在Qt中加入QODBC驱动,使得Qt能连到Windows的SQL上去 在http://www.unixodbc.org/ 下载了unixODBC-2.3.0.tar.gz 安装之后生成Makefile时使用语句 : qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "L……
能说的详细点吗? 你所指的可执行程序目录是我的那个Qt工程还是 /qt/bin/ ?
BenKwan 2013-01-17
  • 打赏
  • 举报
回复
引用 楼主 shance3c 的回复:
请问各位如何在Qt中加入QODBC驱动,使得Qt能连到Windows的SQL上去 在http://www.unixodbc.org/ 下载了unixODBC-2.3.0.tar.gz 安装之后生成Makefile时使用语句 : qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "LIBS+=-L/usr/local/u……
找不到驱动吧,你把odbc的so扔到你的可执行程序目录下看看

16,799

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧