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();
    }
  • 相关阅读:
    linux--menuconfig
    linux--rcs
    linux--VSS/RSS/PSS/USS
    vi编辑器中发现文件中每行都有一个^M字符
    linux umount命令
    Linux mount命令
    Linux rmmod命令
    Linux lsmod命令
    Linux insmod命令
    linux--cpio文件
  • 原文地址:https://www.cnblogs.com/davygeek/p/5659945.html
Copyright © 2011-2022 走看看