zoukankan      html  css  js  c++  java
  • Qt编译Oracle OCI驱动

    最近使用qt开发了一个访问数据库的工具, 默认使用ODBC驱动注入的方式,后来发现Oracle中ODBC驱动注入经常失败。

    后来就想直接使用OCI方式访问,而默认情况下Qt只有Sqlite和ODBC驱动,OCI需要自己编译安装; 网上有相应的驱动安装介绍,自己实验可行:

    编译前置条件:

    1. QT源码安装,需要包含src目录中的源码

    2. Oracle驱动源码安装, 需要有OCI驱动源码,否则无法编译

    环境要求:

    QT环境:Qt  5.3.2 /MinGW4.7.2/WIN7 32bit

    打开Qt Command Prompt,分别执行以下命令,以编译Oracle驱动:

    set INCLUDE=%include%;C:oracleproduct10.2.0db_1OCIinclude;C:QtQt5.3.2ToolsMinGWinclude
    set LIB=%lib%;C:oracleproduct10.2.0db_1OCIlibMSVC
    cd C:QtQt5.3.25.3.2Srcqtbasesrcpluginssqldriversoci
    qmake oci.pro
    mingw32-make

      

    其中,C:oracleproduct10.2.0db_1OCIinclude为Oracle OCI驱动源码所在目录,D:/QT/mingw/include为编译环境的位置。

    执行完以上语句,就会生成libqsqloci.a、libqsqlocid.a、qsqloci.dll、qsqlocid.dll四个文件,把它们copy到C:QtQt5.0.25.0.2mingw47_32pluginssqldrivers目录中即可。
    在程序中测试:

    #include <QCoreApplication>
    #include <QtSql/QSqlDatabase>
    #include <QDebug>
    #include <QStringList>
    int main(int argc, char *argv[])
    {
    QCoreApplication a(argc, argv);
    qDebug()<<“Available drivers:”;
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
    qDebug() <<“/t” << driver;
    return a.exec();
    }

      

    可以看到对应的驱动列表:

    驱动没有问题之后可以使用以下代码测试下是否可以连通oracle数据库

    #include <QCoreApplication>
    #include <QtSql>
    #include <QDebug>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
        db.setHostName("MY_IP_OR_HOST_NAME");
        db.setDatabaseName("XE");
        db.setUserName("test");
        db.setPassword("test_password");
    
        if (!db.open())
        {
            qDebug() << db.lastError().text();
        }
        else{
            qDebug() << "Wow opened";
        }
    
        return a.exec();
    }
  • 相关阅读:
    洛谷P1501 动态树(LCT)
    Beijing Institute of Technology 2019.6 Monthly Contest (For grade 2018)
    [BJOI2018]求和
    [JSOI2015]最小表示
    简单题
    [Ynoi2016]掉进兔子洞
    乘积
    飞扬的小鸟
    [CTSC2008]网络管理
    Sequence
  • 原文地址:https://www.cnblogs.com/davygeek/p/5659945.html
Copyright © 2011-2022 走看看