前提要安装oracle 32位的客户端。到C:\Qt\Qt5.8.0\5.8\Src\qtbase\src\plugins\sqldrivers复制oci为oci1。修改oci.pro文件。 如下: TEMPLATE = lib TARGET =
q
t
L
i
b
r
a
r
y
T
a
r
g
e
t
(
q
s
q
l
o
c
i
)
Q
T
=
c
o
r
e
c
o
r
e
−
p
r
i
v
a
t
e
s
q
l
−
p
r
i
v
a
t
e
C
O
N
F
I
G
+
=
b
u
i
l
d
a
l
l
D
E
F
I
N
E
S
+
=
Q
T
P
L
U
G
I
N
Q
T
N
O
C
A
S
T
T
O
A
S
C
I
I
Q
T
N
O
C
A
S
T
F
R
O
M
A
S
C
I
I
H
E
A
D
E
R
S
+
=
qtLibraryTarget(qsqloci) QT = core core-private sql-private CONFIG += build_all DEFINES += QT_PLUGIN QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII HEADERS +=
qtLibraryTarget(qsqloci)QT=corecore−privatesql−privateCONFIG+=buildallDEFINES+=QTPLUGINQTNOCASTTOASCIIQTNOCASTFROMASCIIHEADERS+=PWD/qsql_oci_p.h SOURCES +=
P
W
D
/
q
s
q
l
o
c
i
.
c
p
p
PWD/qsql_oci.cpp
PWD/qsqloci.cppPWD/main.cpp INCLUDEPATH += $(ORACLE_HOME)/oci/include #D:/Dev/oracle/product/12.2.0/dbhome_1 #D:\app\jack\product\11.2.0\client_1 QMAKE_LFLAGS +=D:\app\jack\product\11.2.0\client_1\BIN\oci.dll INCLUDEPATH += D:\app\jack\product\11.2.0\client_1\oci\include
LIBPATH += D:\app\jack\product\11.2.0\client_1\oci\lib\msvc #QMAKE_USE += oci #QMAKE_LFLAGS += $(ORACLE_HOME)/oci/lib/msvc/oci.lib darwin:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environ OTHER_FILES += oci.json 4. 编译,再到生成目录下C:\Qt\Qt5.8.0\5.8\Src\qtbase\src\plugins\sqldrivers\build-oci-Desktop_Qt_5_8_0_MinGW_32bit-Release\release将dll拷贝到C:\Qt\Qt5.8.0\5.8\mingw53_32\plugins\sqldrivers。 5. 测试连接。 QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() <<"\t" << driver;
QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");
db.setPort(1531);
db.setHostName("192.168.88.13");
db.setDatabaseName("ISMARTWMS");
db.setUserName("iplant1");
db.setPassword("iplant1");
bool ok = db.open();
if(ok) {
qDebug() << "connect sucess!";
} else {
qDebug() << "connect failed!";
}
db.close();