由与qt开源版本没有提供oracle数据库驱动,须要本身根据源代码来手动编译oracle驱动。程序员
通过近三天的折腾,终于成功编译oracle驱动,链接到数据库sql
ps:期间通过各类失败疼苦迷茫。如今终于完成,心情也开阔些。程序员强迫症的疼苦。闲言少叙。接下来将一步一步,描述个人实现过程数据库
1、工具准备windows
一、qt-opensource-windows-x86-msvc2015_64-5.8.0.exe这个是我是用的qtSDK及里面包含的atcreatororacle
二、在安装的过程当中切记把 src选项勾上,默认是不选的。app
三、ORA+11+G+R2+server+64bit+for+windows.iso这是我使用的oracle数据库工具
2、编译生成oracle驱动网站
一、使用qtcreate打开下面目录的项目C:\Qt\Qt5.8.0\5.8\Src\qtbase\src\plugins\sqldrivers\oci每一个人安装路径可能不同,可根据本身的状况相应更改spa
须要强调的是在安装qt-opensource-windows-x86-msvc2015_64-5.8.0.exe须要勾选src选项。才能有相应的src目录debug
打开后直接执行qmake。发现如上面出现的错误。这个问题曾纠结了我一天多。最终在某国外网站找到了解决方法(曾一度想放弃了)
解决方法:打开oci.pro文件
如花圈里面所示。把原来上面那句去掉,添加下面那句即QMAKE_LFLAGS += oci.lib
在右击qmake项目发现成功
二、右击构建项目
出现以上问题。这是须要include Oracle相关的头文件
打开工程文件添加
INCLUDEPATH += D:\app\Administrator\product\11.2.0\dbhome_1\OCI\include
注意相应的目录根据你本身oracle安装目录而定,可是目录后半部分都是同样的如\product\11.2.0\dbhome_1\OCI\include
这样就把相关的头文件包进该工程里了
接着构建项目,发现以下错误
解决方法:上面只抱进的相应的头文件,还应该把相关的lib文件包含进来
打开工程文件,添加:LIBS += D:\app\Administrator\product\11.2.0\dbhome_1\OCI\lib\MSVC\oci.lib,以下图
若是仍然找不到oci.lib能够使用这种添加形式:LIBPATH += D:\app\Administrator\product\11.2.0\dbhome_1\OCI\lib\MSVC
清除项目 ->执行qmake->从新构建
没有错误出现了,仅仅是几个类型转换的警告。
代表已经生成成功。oracle相关驱动一辈子成成功
打开文件C:\plugins\sqldrivers
果真已经生成相应的dll lib驱动文件。
3、使用驱动链接数据库
把上面目录显得qsqloci.dll(release版本)、qsqlocid.dll(debug版本)文件考到目录
C:\Qt\Qt5.8.0\5.8\msvc2015_64\plugins\sqldrivers
ps:目录根据具体安装而定,但后面部分都是同样的,别考错了
4、qt编写代码链接oracle数据库
注意在链接数据库的项目文件里添加QT += sql
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;
}
}
运行结果以下:
说明数据库已链接成功!!!
现贴出整个数据库链接头文件
有什么问题能够及时联系我