您的位置:首页 > 编程语言 > Qt开发

qt连接oracle数据库

2017-04-14 15:04 239 查看
由与qt开源版本没有提供oracle数据库驱动,需要自己根据源代码来手动编译oracle驱动。

经过近三天的折腾,终于成功编译oracle驱动,连接到数据库

ps:期间经过各种失败疼苦迷茫。现在终于完成,心情也开阔些。程序员强迫症的疼苦。闲言少叙。接下来将一步一步,描述我的实现过程

一、工具准备(工具一定要一致,否则可能出现其他未知问题)

1、qt-opensource-windows-x86-msvc2015_64-5.8.0.exe这个是我是用的qtSDK及里面包含的atcreator

2、在安装的过程中切记把 src选项勾上,默认是不选的。

3、ORA+11+G+R2+server+64bit+for+windows.iso这是我使用的oracle数据库

二、编译生成oracle驱动

1、使用qtcreate打开下面目录的项目C:\Qt\Qt5.8.0\5.8\Src\qtbase\src\plugins\sqldrivers\oci每个人安装路径可能不一样,可根据自己的情况相应更改

需要强调的是在安装qt-opensource-windows-x86-msvc2015_64-5.8.0.exe需要勾选src选项。才能有相应的src目录



打开后直接执行qmake。发现如上面出现的错误。这个问题曾纠结了我一天多。最终在某国外网站找到了解决方法(曾一度想放弃了)

解决方法:打开oci.pro文件



如花圈里面所示。把原来上面那句去掉,添加下面那句即QMAKE_LFLAGS += oci.lib

在右击qmake项目发现成功

2、右击构建项目



出现以上问题。这是需要include Oracle相关的头文件

打开工程文件添加

INCLUDEPATH += D:\app\Administrator\product\11.2.0\dbhome_1\OCI\include



注意相应的目录根据你自己oracle安装目录而定,但是目录后半部分都是一样的如\product\11.2.0\dbhome_1\OCI\include

这样就把相关的头文件包进该工程里了

接着构建项目,发现如下错误



解决方法:上面只抱进的相应的头文件,还应该把相关的lib文件包含进来

打开工程文件,添加:LIBPATH += D:\app\Administrator\product\11.2.0\dbhome_1\OCI\lib\MSVC,如下图



清除项目 ->执行qmake->重新构建



没有错误出现了,仅仅是几个类型转换的警告。

表明已经生成成功。oracle相关驱动一生成成功

打开文件C:\plugins\sqldrivers



果然已经生成相应的dll lib驱动文件。

三、使用驱动连接数据库

把上面目录显得qsqloci.dll、qsqlocid.dll文件考到目录

C:\Qt\Qt5.8.0\5.8\msvc2015_64\plugins\sqldrivers

ps:目录根据具体安装而定,但后面部分都是一样的,别考错了



四、qt编写代码连接oracle数据库

static bool createConnection()

{

QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");//QOCI

db.setPort(1521);

db.setHostName("127.0.0.1");

db.setDatabaseName("orcl");

db.setUserName("test");

db.setPassword("456123");

if (!db.open()) {

QMessageBox::critical(0, "Cannot open database",

"Unable to establish a database connection.", QMessageBox::Cancel);

return false;

}

else{

QMessageBox::critical(0,"congratulation!","oracle database connnect successfuly!!!",QMessageBox::Ok);

return true;

}

}
运行结果如下:





说明数据库已连接成功!!!
现贴出整个数据库连接头文件




有什么问题可以及时联系我
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: