当前位置: 首页 > news >正文

做外贸需要英文网站php网站忘记后台密码

做外贸需要英文网站,php网站忘记后台密码,石家庄品牌网站建设,泰安做网络推广的QT学习笔记-QT安装oracle oci驱动 0、背景1、环境以及条件说明2、编译驱动2.1 下载oracle instant client2.2 编译qt oci驱动2.2.1 修改oci.pro2.2.2 MinGW64构建套件编译2.2.3 MSVC2019_64构建套件编译 3、访问数据库运行成功 0、背景 在使用QT开发应用的过程中,往…

QT学习笔记-QT安装oracle oci驱动

  • 0、背景
  • 1、环境以及条件说明
  • 2、编译驱动
    • 2.1 下载oracle instant client
    • 2.2 编译qt oci驱动
      • 2.2.1 修改oci.pro
      • 2.2.2 MinGW64构建套件编译
      • 2.2.3 MSVC2019_64构建套件编译
  • 3、访问数据库运行成功

0、背景

在使用QT开发应用的过程中,往往会把应用使用过程中产生的数据放入数据库进行统一存储,因此通过QT实现数据库的访问可以说是必须的一个知识点,其实QT访问数据库的语法及相关类和方法的使用并不复杂,但是对于使用QT的新人来说往往会开在数据库驱动加载的地方,比如遇到以下问题:

QSqlDatabase: QPSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMARIADB QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7

虽然QT的驱动列表中有QPSQL,但是确保不能加载。下面就来说一下正确使用QT方法数据的驱动问题。

QT最新的安装包安装完毕后,默认支持ODBC和SQLITE数据库,要想使用其他的数据库那么你在安装QT的时候要把源码选项勾上。

1、环境以及条件说明

操作系统:windows10专业版
数据库版本:Postgresql 14.6(64位)(在编译驱动的时候需要引用这里面的库和头文件,也可以不安装直接下载压缩包解压也行)
QT版本:5.15.2,且安装的时候勾选了源码
QT安装目录:D:\Qt
QT编译套件1:MinGW64(关于32位位与64位问题要与数据库一致)
QT编译套件2:MSVC2019_64(不同的编译套件默认内置的数据库驱动是不一样的,具体看套件的plugins/sqldrivers/目录下的库文件)

2、编译驱动

2.1 下载oracle instant client

1、首先要下载oracleclient,因为在编译oci驱动时要依赖oracleclient中的库和头文件。下载地址为:
https://www.oracle.com/database/technologies/instant-client/downloads.html
如下图:
在这里插入图片描述
Oracle Instant Client的下载要根据操作系统版本和Oracle服务器版本匹配才行。我开发环境是Windows10 64位系统,因此选择的是Instant Client for Microsoft Windows (x64)

2、点击后会出现Oracle Instant Client版本选择,如下图:
在这里插入图片描述
不同的Oracle Instant Client版本支持的Oracle服务器的版本也不相同,我用的Oracle服务器版本是11.2,这里选择的版本是Version 19.xx.x.x.x,我之前下载的是19.19,现在截图的时候已经是19.20,差别不大。
3、点开后可以看到有BasicPackage、SQL*Plus Package、Tools Package、SDK Package、JDBC Supplement Package、ODBC Package等包的下载,如下图:
在这里插入图片描述

编译oci,需要至少2个包,就是Baisc Package、SDK Package

4、下载后如下图:
在这里插入图片描述
然后解压basic和sdk这2个压缩包。
5、我这个把解压后的文件夹复制到D盘了,复制不复制可以根据实际情况定。如下图:
在这里插入图片描述

2.2 编译qt oci驱动

2.2.1 修改oci.pro

1、首先找到qt oci项目的源码,我的源码(记住安装QT的时候一定要勾选源码)位置如下:
D:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\oci
在这里插入图片描述
2、然后用qtcreator打开oci.pro,并对oci.pro的内容进行修改(修改之前最好先对oci项目进行一下备份),如下:

TARGET = qsqlociHEADERS += $$PWD/qsql_oci_p.h
SOURCES += $$PWD/qsql_oci.cpp $$PWD/main.cpp#注释该行
#QMAKE_USE += oci#根据Oracle客户端安装路径 指定oci.dll
QMAKE_LFLAGS += D:\oracleinstantclient_19_19\oci.dll#根据Oracle客户端安装路径 指定头文件目录
INCLUDEPATH += D:\oracleinstantclient_19_19\sdk\include#根据Oracle客户端安装路径 指定库文件(.lib)路径
LIBS += -LD:\oracleinstantclient_19_19\sdk\lib\msvc -locidarwin:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environOTHER_FILES += oci.jsonPLUGIN_CLASS_NAME = QOCIDriverPlugin
include(../qsqldriverbase.pri)

如下图:
在这里插入图片描述

2.2.2 MinGW64构建套件编译

1、在qtcreator设置项目使用的构建套件为MinGW64,如下图:
在这里插入图片描述
2、分别进行Debug编译和Release编译,编译完毕后出现如下图:
在这里插入图片描述
在D:\plugins\sqldrivers目录生成的libqsqloci.a、qsqloci.dll、qsqloci.dll.debug
3、让QT的程序能找到编译好的驱动。
qt工程在编译是默认寻找数据库驱动的路径(注意项目使用的编译套件是MinGw 64位的)是:D:\Qt\5.15.2\mingw81_64\plugins\sqldrivers,因此需要把上一步编译生成的3个文件libqsqloci.a、qsqloci.dll、qsqloci.dll.debug复制到D:\Qt\5.15.2\mingw81_64\plugins\sqldrivers目录下。如下图:
在这里插入图片描述

2.2.3 MSVC2019_64构建套件编译

1、在qtcreator设置项目使用的构建套件为MSVC2019_64,如下图:
在这里插入图片描述
这时切换到代码编辑会发现一个错误,内容为:Project ERROR: msvc-version loaded but QMAKE_MSC_VER isn’t set,如下图:
在这里插入图片描述
为了解决这个问题,我们需要在D:\Qt\5.15.2\msvc2019_64\mkspecs\common\msvc-version.conf中设置一下QMAKE_MSC_VER的值,如下图:
在这里插入图片描述

注意:1919那个值应该是从下面的版本设置列表中找到才行。

2、然后关闭qtcreator,重新打开qtcreator,并在qtcreator中打开oci.pro项目,然后使用MSVC2019_64构建套件进行编译,又出现了一个错误,内容为:LNK1107:文件无效或损坏:无法在0x2F8处读取 - oci.dll,如下图:
在这里插入图片描述

在使用MSVC构建套件进行编译oci时不需要在pro中指定oci.dll的路径

我们需要再修改一下pro文件的内容,修改后内容如下:

TARGET = qsqlociHEADERS += $$PWD/qsql_oci_p.h
SOURCES += $$PWD/qsql_oci.cpp $$PWD/main.cpp#注释该行
#QMAKE_USE += oci#根据Oracle客户端安装路径 指定oci.dll
!msvc {QMAKE_LFLAGS += D:\oracleinstantclient_19_19\oci.dll
}#根据Oracle客户端安装路径 指定头文件目录
INCLUDEPATH += D:\oracleinstantclient_19_19\sdk\include#根据Oracle客户端安装路径 指定库文件(.lib)路径
LIBS += -LD:\oracleinstantclient_19_19\sdk\lib\msvc -locidarwin:QMAKE_LFLAGS += -Wl,-flat_namespace,-U,_environOTHER_FILES += oci.jsonPLUGIN_CLASS_NAME = QOCIDriverPlugin
include(../qsqldriverbase.pri)

如下图:
在这里插入图片描述
这样修改后,无论我们使用msvc构建套件还是mingw构建套件都可以正常编译过去了。
3、为了防止msvc构建套件编译生成的库文件与mingw构建套件编译生成的库文件混淆,我们先把D:\plugins\sqldrivers目录中的文件删除,然后通过msvc构建套件编译oci项目,编译完毕后生成的库文件如下图:
在这里插入图片描述
4、让QT的程序能找到编译好的驱动。
qt工程在编译是默认寻找数据库驱动的路径(注意项目使用的编译套件是MSVC2019_64位的)是:D:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers,因此需要把上一步编译生成的3个文件libqsqloci.a、qsqloci.dll、qsqloci.dll.debug复制到D:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers目录下。如下图:
在这里插入图片描述

3、访问数据库运行成功

1、需要在代码中指定引用的oci库的路径

QLibrary *oci_lib = new QLibrary("D:/oracleinstantclient_19_19/oci.dll");
oci_lib->load();
if (!oci_lib->isLoaded())
{qDebug() << "oracle oci动态库加载失败!";return;
}

2、完整测试代码如下:

#ifdef Q_OS_WINQLibrary *oci_lib = new QLibrary("D:/oracleinstantclient_19_19/oci.dll");oci_lib->load();if (!oci_lib->isLoaded()){qDebug() << "oracle oci动态库加载失败!";return;}
#else
//    QLibrary *oci_lib = new QLibrary("/usr/lib/oracleclient/instantclient_19_19/libclntsh.so");
//    bool loadresult = oci_lib->load();
//    qDebug() << "oracle oci动态库load result is " << loadresult;
//    if (!loadresult)
//    {
//        qDebug() << oci_lib->errorString();
//    }
//    if (!oci_lib->isLoaded())
//    {
//        qDebug() << "oracle oci动态库libclntsh.so加载失败!";
//        return;
//    }
#endifQStringList driverList = QSqlDatabase::drivers();qDebug() << driverList;//以下代码测试访问Oracle数据库QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");db.setHostName("172.16.12.6");db.setPort(1521);db.setDatabaseName("orcl");db.setUserName("mes");db.setPassword("oracle");if (!db.open()){qDebug() << "数据库连接失败!";}else{qDebug() << "数据库连接成功!";}

3、运行结果如下:
在这里插入图片描述

http://www.yayakq.cn/news/953366/

相关文章:

  • 如何建设网站 知乎软件研发租用网站怎么做分录
  • 昆明做网站的网络公司石家庄专业网站设计
  • 深圳外贸网站制作价格旅游网站建设翻译
  • 自已如何做网站著名展厅设计
  • 国内做网站用的程序巫山那家做网站厉害
  • 公司有必要建设网站吗游戏网站排行
  • 媒体软文发布平台青岛公交优化
  • 东莞常平建网站公司可以做引流网站的源码
  • 网站的建设内容移动互联网开发技术是什么
  • 重庆大足网站建设网站外的seo
  • 网站建设补救方法廊坊网站推广
  • 排版漂亮的网站网站制作网站设计
  • 中山网站模板门户网站运营
  • 自助网站免费注册dw php网站开发书籍云盘
  • 建设ftp网站怎么创建数据库网站右侧固定标题怎么做
  • 四川华海建设集团有限公司网站百度旗下有哪些app
  • 微建站平台网站设计建设维护
  • 简历网站免费网络规划设计师资料
  • 济南网站建设正规公司建筑方案ppt模板
  • 在excel表里做网站模板小白学做搭建网站
  • wordpress 建两个网站怎么做网页快捷方式
  • 内蒙古呼和浩特市做网站的公司app软件开发的费用设计
  • 福州 建站 软件简述常用的网络营销方法
  • 如何做公司网站百度推广开发商违约延期交房可以退房吗
  • 设计得很好的企业网站网站设计建设趋势
  • 教育网站开发文档模板如何做自己的淘宝客网站
  • 中山市智能h5网站建设公司广西网站开发软件
  • 河南平价的seo整站优化定制seo网络推广软件
  • 建设监理有限责任公司网站长沙人才市场最新招聘
  • 网站名字怎样做版权临沂企业自助建站系统