알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)

Oracle DB 연동 (QOCI) 리눅스 본문

QT/QSQL Database Drivers

Oracle DB 연동 (QOCI) 리눅스

백곳 2017. 9. 15. 14:45

Oracle DB 연동 (QOCI)


OCI BLOB/LOB Support 도 한다. 


OCI BLOB/LOB Support 설명은 QT doc 에 잘 나와 있다. 


오라클 9 버전과 10 버전 이상 드라이버 작성 방식이 다른데 기본 원리는 똑같으므로 10 버전 이상으로 설명 하겠습니다. 


Qt 문서 설명된것으로는 


cd $QTDIR/qtbase/src/plugins/sqldrivers/oci
qmake "INCLUDEPATH+=/usr/include/oracle/10.1.0.3/client/" "LIBS+=-L/usr/lib/oracle/10.1.0.3/client/lib -lclntsh" oci.pro
make

이렇게 나와 있습니다.


여기서 필요한 파일을 받고 드라이버를 직접 설치 해 보겠습니다. 


필요한 파일을 받습니다. sdk와 기본 라이브러리 입니다. 


현재 글 작성 날짜 기준으로 


http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html


에서 배포 하고 있습니다. 


저는 x86-64 에 리눅스 입니다. 


그림에서 밑줄친 base 와 sdk 를 다운 받습니다. 



그리고 압축을 풀면 



우리가 필요한 헤더 파일과 clntsh 라이브러리가 있습니다. 

/Qt/5.7/Src/qtbase/src/plugins/sqldrivers/oci$ /home/bhkim/Qt/5.7/gcc_64/bin/qmake "INCLUDEPATH+=/home/bhkim/instantclient_12_2/sdk/include" "LIBS+=-L/home/bhkim/instantclient_12_2 -lclntsh" ./oci.pro


make 

make install


드라이브 설치를 완료 합니다. 



설치 되게 됩니다 .


하지만 이 라이브러리 또한 OCIbase의 라이브러리를 사용하게 됩니다. 


그리서 라이브러리를 기본으로 링크 할수 있게 


/etc/ld.so.conf.d/ 에들어가서 

oci.conf 를 만들고 


내용은 oci 라이브러리가 있는 폴더로 설정해 줍니다. 

oci.conf 에 


/home/bhkim/instantclient_12_2


그리고 

$ sudo ldconfig


그리고 소스 코드에서 


project에 


QT       += core gui sql


sql 입력 하고 

#include <qsqldatabase>
QSqlDatabase mes_db;
    mes_db = QSqlDatabase::addDatabase("QOCI","TEST");
    mes_db .setHostName("10.20.10.190");
    mes_db .setUserName("TEST1234");
    mes_db .setPassword("TEST1234");
    mes_db .setDatabaseName("TESTDB");
    if(!mes_db .open()){
        qDebug()<<"open false";
    }else {
        qDebug()<<"open db";
    }


DB가 OPEN 되며 접속이 됩니다. 

Comments