《Qt访问Oracle数据库的驱动说明》由会员分享,可在线阅读,更多相关《Qt访问Oracle数据库的驱动说明(3页珍藏版)》请在金锄头文库上搜索。
1、Qt访问Oracle数据库的驱动编译说明Qt免费版本没有提供QOCI驱动(Qt访问Oracle的用户接口驱动),因此必须通过利用源代码编译生成QOCI。本文介绍基于不同操作系统(Win7_X64和RHEL6.1_X64)和编译器(Win7+MinGW/VS2008和RHEL+GCC)如何生成QOCI。一、Win7_X64系统安装VS2008、。安装完毕后,则可以实现基于vs2008实现Qt软件开发。编译生成QOCI时必须用到Oracle的相关文件(oci.lib和oci.h)。如果安装了Oracle11g数据库,则编译所需要的头文件和库文件分别在$ORACLE_HOMEOCIinclude和$
2、ORACLE_HOMEOCIlibMSVC。如果未安装Oracle11g也可从Oracle官网下载.rar,直接解压可以获得所需要的头文件和库文件。(QTDIR=D:qt4.8.0; ORACLE_HOME=E:apporacleproduct11.2.0dbhome_1)1、编译生成QOCI_vs2008利用vs2008打开D:Qt4.8.0srcpluginssqldriversocioci.pro设置qsqloci的工程属性,增加头文件oci.h的路径支持设置qsqloci的工程属性,设置oci.lib路径支持通过设定configuration manager依次生成QOCI的调试版和发
3、布版。编译生成Debug版本和Release版本的动态库:qsqlocid4.dll、qsqlocid4.lib和qsqloci4.dll、qsqloci4.lib。将上述文件拷贝至$QTDIRpluginssqldrivers文件中即可。2、编译生成QOCI_MinGWMinGW编译器采用了QtCreator2.4.1集成的MinGW编译环境。采用了源代码包。(假设QtCreator的安装路径为D:QtSDK,Qt源代码解压路径D:qsrc)开始编译前,需要修改几个环境变量:在PATH中添加D:QtSDKmingwbin(备注:mingw32-make路径)D:QtSDKDesktopQt4
4、.8.0mingwbin(备注:qmake路径)在LIB中添加D:QtSDKDesktopQt4.8.0mingwlib(备注:MinGW库文件路径)E:apporacleproduct11.2.0dbhome_1OCIlibMSVC (备注:oci.lib路径)在INCLUDE中添加E:apporacleproduct11.2.0dbhome_1OCIinclude(备注:oci.h路径)通过cmd进入E:qsrcsrcpluginssqldriversoci路径,执行qmake和mingw32-make,如下图编译后生成的动态库libqsqloci4.a、libqsqlocid4.a、qs
5、qloci4.dll、qsqlocid4.dll在E:qsrcpluginssqldrivers文件夹中。将上述文件拷贝至Qt目录对应的pluginssqldirver中即可。3、QOCI插件安装利用上述方法生成QOCI插件。如果开发环境采用的QtCreator集成开发环境(安装路径QTSDK_PATH=),则根据不同的编译器将上述库文件放置在$QTSDK_PATHvs2008pluginssqldrivers或$QTSDK_PATHmingwpluginssqldrivers下面即可。如果是单独安装的Qt(QTDIR=)在放置在$QTDIRpluginssqldrivers下即可。4、Ora
6、cle访问程序例子1. #include 2. #include 3. #include 4. #include 5. intmain(intargc,char*argv)6. 7. QCoreApplicationa(argc,argv);8. / 9. QSqlDatabasedb=QSqlDatabase:addDatabase(QOCI);10. db.setHostName(192.168.0.192);11. db.setDatabaseName(dbname);12. db.setUserName(username);13. db.setPassword(passwd);14. db.setPort(1521);15. if(db.open()16. printf(打开成功/n);17. else18. printf(打开失败/n);19. / 20. QSqlQueryquery(SELECTcolumn_1FROMtable_1);21. while(query.next()22. QStringcountry=query.value(0).toString();23. printf(%s/n,country.toLocal8Bit().data();24. 25. / 26. returna.exec();27.