Qt5.3.2_Oracle驅動

來源:互聯網
上載者:User

標籤:btn   contain   響應   tar   passwd   add   exe   err   sop   

參考網址:http://blog.csdn.net/sdqyhn/article/details/39855847

 

1、這隻是 Qt5.3.2 使用的驅動,它還是要調用 Oracle用戶端/服務端 裡面的檔案。

  並不是 有了這個驅動就不需要安裝Oracle用戶端/服務端...

  1.1、源碼所在路徑:“E:\ZC_ProgramFiles_2016\Qt532_vs2010\5.3\Src\qtbase\src\plugins\sqldrivers\oci”

    ZC: 在Qt5.3.2的安裝路徑中搜尋“oci”,還搜到一個結果:“E:\ZC_ProgramFiles_2016\Qt532_vs2010\5.3\Src\qtbase\src\sql\drivers\oci”,但是 網路上面的文章 都沒有用這個路徑源碼的... 暫時先不管它吧...

2、將 源碼 複製出來,準備編譯

 2.1、貌似 需要一些依賴項 ==> 直接在 路徑“E:\ZC_ProgramFiles_2016\Qt532_vs2010\5.3\Src\qtbase\src\plugins\sqldrivers\oci”中開啟項目再編譯

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

   網上搜尋,解決:在 pro檔案中添加 :

INCLUDEPATH += E:\oracle\product\10.2.0\db_1\oci\includeLIBPATH += E:\oracle\product\10.2.0\db_1\oci\lib\msvc

    ZC: 我這裡,安裝的是 Oracle10g(x86)的服務端,不同版本的Oracle 這裡的路徑可能會不同

  2.1.2、執行 qmake--> 重新構建,一切正常。產生的 dll檔案 位於路徑:“F:\plugins\sqldrivers”中,這個不知是哪裡設定的...

3、使用:

  要將“F:\plugins\sqldrivers”中的響應驅動,複製到 exe所在路徑的 "sqldrivers"檔案夾下,不然會 報找不到驅動的錯誤。

4、測試代碼:

  4.1、pro

QT       += core gui                sqlgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = OracleTest01TEMPLATE = appSOURCES += main.cpp        mainwindow.cppHEADERS  += mainwindow.hFORMS    += 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、

 

Qt5.3.2_Oracle驅動

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.