• Qt5.3.2_Oracle驱动


    参考网址:http://blog.csdn.net/sdqyhn/article/details/39855847

    ZC: 将编译好的 qsqloci.dll和qsqlocid.dll 放到 目录“E:C_ProgramFiles_2016Qt532_vs20105.3msvc2010_openglpluginssqldrivers”中,这样 在Qt中调试程序的时候 也可以找到相应的驱动文件了

    1、这只是 Qt5.3.2 使用的驱动,它还是要调用 Oracle客户端/服务端 里面的文件。

      并不是 有了这个驱动就不需要安装Oracle客户端/服务端...

      1.1、源码所在路径:“E:C_ProgramFiles_2016Qt532_vs20105.3Srcqtbasesrcpluginssqldriversoci

        ZC: 在Qt5.3.2的安装路径中搜索“oci”,还搜到一个结果:“E:C_ProgramFiles_2016Qt532_vs20105.3Srcqtbasesrcsqldriversoci”,但是 网络上面的文章 都没有用这个路径源码的... 暂时先不管它吧...

    2、将 源码 复制出来,准备编译

     2.1、貌似 需要一些依赖项 ==> 直接在 路径“E:C_ProgramFiles_2016Qt532_vs20105.3Srcqtbasesrcpluginssqldriversoci”中打开项目再编译

      2.1.1、提示 找不到“oci.h”

       网上搜索,解决:在 pro文件中添加 :

    INCLUDEPATH += E:oracleproduct10.2.0db_1ociinclude
    LIBPATH += E:oracleproduct10.2.0db_1ocilibmsvc

        ZC: 我这里,安装的是 Oracle10g(x86)的服务端,不同版本的Oracle 这里的路径可能会不同

      2.1.2、执行 qmake--> 重新构建,一切正常。生成的 dll文件 位于路径:“F:pluginssqldrivers”中,这个不知是哪里设置的...

    3、使用:

      要将“F:pluginssqldrivers”中的相应驱动(qsqloci.dll和qsqlocid.dll),复制到 exe所在路径的 "sqldrivers"文件夹下,不然 会报 找不到驱动的错误。

    4、测试代码:

      4.1、pro

    QT       += core gui    
                sql
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = OracleTest01
    TEMPLATE = app
    
    
    SOURCES += main.cpp
            mainwindow.cpp
    
    HEADERS  += mainwindow.h
    
    FORMS    += mainwindow.ui
    
    #ZC: 本来 编译不通过,说找不到函数,肯定是缺少lib文件了,但是 设置了下面的语句还是不行。
    #ZC: 后来才知道 原来是“QT +=”中药添加“sql”
    #LIBPATH += F:/plugins/sqldrivers
    #LIB += -lqsqloci

      4.2、cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    #include <QtSql/QSqlDatabase>
    #include <QtSql/QSqlQuery>
    #include <QtSql/QSqlRecord>
    #include <QtSql/QSqlError>
    #include <QDebug>
    
    #include <QMessageBox>
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    
    #define DB_DRIVER       "QOCI" // ZC: 这里写的是“QOCI”,实际对应的所需要的 文件是“qsqloci.dll”
    #define DB_HOSTNAME     "192.168.1.201"
    #define DB_DATABASENAME "ZHEJIANG"
    #define DB_USERNAME     "wenzhoupdpas"
    #define DB_PASSWD       "dongruisoft.com"
    
    void MainWindow::on_pbtnTest01_clicked()
    {
        // ZC: 连接名
        QString strConnName = "wenzhoupdpas_z";
        QSqlDatabase sqlDataBase;
        if (QSqlDatabase::contains(strConnName))
            sqlDataBase = QSqlDatabase::database(strConnName);
        else
            // 使用Oracle数据库驱动
            sqlDataBase = QSqlDatabase::addDatabase(DB_DRIVER, strConnName);
        sqlDataBase.setHostName(DB_HOSTNAME);
        sqlDataBase.setDatabaseName(DB_DATABASENAME);
        sqlDataBase.setUserName(DB_USERNAME);
        sqlDataBase.setPassword(DB_PASSWD);
    
        bool bOpen = sqlDataBase.open();
        if (sqlDataBase.isOpen())
            bOpen = true;
    
        if (! bOpen)
        {
            QMessageBox::about(this, "Error", sqlDataBase.lastError().text());
            qDebug() << sqlDataBase.lastError().text();
        }
        else
        {
            QMessageBox::about(this, "OK", "Open Oracle10g success ! !");
            qDebug() << "Open Oracle10g success ! !";
        }
    }

    5、

    6、

    7、

    8、

  • 相关阅读:
    Eclipse创建Maven Web项目 + 测试覆盖率 + 常见问题(2015.07.14——湛耀)
    JAVA面试题——JAVA编程题1(2015.07.22)
    Spring 国际化
    BeanPostProcessor 的使用,实现在对象初始化之前或者之后对对象进行操作
    spring 的配置 bean>>property>>name属性
    文件保存
    Spring-demo1(初学者的尝试,2015.03.19)
    新花生壳内网版2.3 + Tomcat7 搭建自己的网站(2015.01.21)
    (原)Struts 相关资源下载
    Xilinx 7 series FPGA multiboot技术的使用(转)
  • 原文地址:https://www.cnblogs.com/cppskill/p/6228596.html
Copyright © 2020-2023  润新知