標籤: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驅動