QT를 이용하여 오라클 데이터베이스에 접속하는 프로그램을 만들고자 할 경우 QOCI, QODBC 등의 방법으로 접속을 할수 있습니다.
저의 테스트 환경인 QT 5.9 버전에서는 QOCI에 대한 SQL Database Drivers는 제공되지 않기 때문에 직접 생성하여 사용해야합니다.
1. 환경 변수 설정
QTDIR=C:\Qt\Qt5.9.0\5.9\mingw53_32\bin
#### mingw32-make.exe를 사용하기 위한 환경변수의 PATH에 추가
C:\Qt\Qt5.9.0\Tools\mingw530_32\bin
#### 적용 예 : PATH=%PATH%;%QTDIR%\bin;C:\Qt\Qt5.9.0\Tools\mingw530_32\bin
2. cmd.exe를 실행하여 아래와 같이 컴파일 진행
set INCLUDE=%INCLUDE%;N:\app\product\11.2.0\client_1\oci\include
set LIB=%LIB%;N:\app\product\11.2.0\client_1\oci\lib\msvc
set QMAKE_DEFAULT_INCDIRS=N:\app\product\11.2.0\client_1\oci\include
qmake oci.pro
mingw32-make
정상적으로 빌드가 될 경우
C:\Qt\Qt5.9.0\5.9\Src\qtbase\plugins\sqldrivers 경로에 qsqloci.dll, qsqlocid.dll 파일이 생성됨.
3. qmake로 컴파일 진행 중 아래 에러가 발생할 경우
- ERROR : Project ERROR: Library 'oci' is not defined.
#### oci.pro 파일의 원본을 열어서 수정 해야함.
------------------------------------------------------------
TARGET = qsqloci
HEADERS += $$PWD/qsql_oci_p.h
SOURCES += $$PWD/qsql_oci.cpp $$PWD/main.cpp
# QMAKE_USE += oci >> 오라클 클라이언트에서 제공하는 oci.lib를 이용하여 컴파일을 하였더니 OCI 함수를 못찾는 경우가 발생하여 instant-client의 oci.dll 파일로 대체하여 컴파일 하였음.
QMAKE_LFLAGS += oci.dll
darwin:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environ
OTHER_FILES += oci.json
PLUGIN_CLASS_NAME = QOCIDriverPlugin
include(../qsqldriverbase.pri)
------------------------------------------------------------
#### 다시 컴파일 진행 : qmake "LIBS+=-loci" oci.pro
4. mingw32-make로 컴파일 진행 중 아래 에러가 발생할 경우
- ERROR : qsql_oci.cpp:65:17: fatal error: oci.h: No such file or directory
Makefile.Debug / Makefile.Release을 열어서 INCPATH와 LIBS 변수에 오라클의 $ORACLE_HOME/oci/include와 $ORACLE_HOME/oci/msvc 경로를 각각 설정하고 다시 mingw32-make 를 실행함.
5. qsqloci.dll을 생성하기 위한 참조 경로
# oci.pro path
C:\Qt\Qt5.9.0\5.9\Src\qtbase\src\plugins\sqldrivers\oci
# plugin path
C:\Qt\Qt5.9.0\5.9\mingw53_32\plugins\sqldrivers
# OCI HOME
N:\app\product\11.2.0\client_1\oci
# OCI INCLUDE
N:\app\product\11.2.0\client_1\oci\include
# OCI MSVC
N:\app\product\11.2.0\client_1\oci\lib\msvc
# release path
C:\Qt\Qt5.9.0\5.9\Src\qtbase\plugins\sqldrivers
# 참조 페이지
http://doc.qt.io/qt-5/sql-driver.html#qodbc
https://stackoverflow.com/questions/17601662/how-to-build-qt-qoci-oracle-database-driver-on-windows-with-mingw
http://www.oracle.com/technetwork/topics/winsoft-085727.html