QT链接ORACLE遇见的报错

本文讲述了作者在使用QT进行Oracle数据库连接时遇到的问题,如OCIBindByPos2未声明错误和配置文件缺失,以及解决方法,如修改代码、调整包含路径和查询Oracle信息。
摘要由CSDN通过智能技术生成

目录

QT卡死

'OCIBindByPos2' was not declared in this scope         

“Cannot read E:/qtsqldrivers-config.pri: No such file or directory”


链接oracle参考:折腾了半天的QT连接oracle数据库_我真的是个菜鸟,求大佬带!的博客-CSDN博客

报错找不到oci文件(好像是这个)的话尝试把QMAKE_USE += oci注释掉

QT卡死

关闭有道词典试试

'OCIBindByPos2' was not declared in this scope
         

双击进入出错位置

将" r = OCIBindByPos2("改为"r = OCIBindByPos("

将"bindColumn.lengths,"改为"reinterpret_cast<ub2 *>(bindColumn.lengths),"
       

“Cannot read E:/qtsqldrivers-config.pri: No such file or directory”

打开qsqldriversbase文件

注释“#include(PWD)/qtsqldrivers-config.pri) ”

添加"include(./configure.pri)"

编译后的文件所在位置

(不知道为什么不在根目录生成动态库文件)

[SID]

在本电脑中为"xe"

查询方式:"select INSTANCE_NAME from v$instance;"

在qt中设置oracle主机名等

根据自己情况设置

查询oracle的ip地址:select utl_inaddr.get_host_address from dual;

oci函数的详细介绍 和应用实例 OCI 连接过程比较复杂,除了分配设置各个基本句柄外,还要明确彼此之间的联系,大致流程如下: 创建环境句柄: OCIEnvCreate(&envhp;, …); 创建一个指定环境的错误句柄: OCIHandleAlloc((dvoid *)envhp, (dvoid **)&errhp;,…); 创建一个指定环境的服务器句柄: OCIHandleAlloc((dvoid *)envhp, (dvoid **)&servhp;,…); 建立到数据源的访问路径 : OCIServerAttach(servhpp, errhpp,…); 创建一个指定环境的服务上下文句柄: (void) OCIHandleAlloc((dvoid *)envhpp,…); 为指定的句柄及描述符设置特定的属性: (void) OCIAttrSet((dvoid *)svchpp,…); 创建一个指定环境的用户连接句柄: (void) OCIHandleAlloc((dvoid *)envhpp,…); 为用户连接句柄设置登录名及密码: (void) OCIAttrSet((dvoid *)usrhpp,…); 认证用户建立一个会话连接: OCISessionBegin(svchpp, errhpp,…); 创建一个句子句柄: OCIHandleAlloc((dvoid *)envhpp,…);s 准备 SQL 语句: OCIStmtPrepare(stmthpp, errhpp,…); 绑定输入变量: OCIBindByPos(stmtp &hBind;, errhp,…); 绑定输出变量: OCIDefineByPos(stmthpp, &bhp1;, errhpp,…); 获得 SQL 语句类型: OCIAttrGet ((dvoid *)stmthpp, (ub4)OCI_HTYPE_STMT,…); 执行 SQL 语句: OCIStmtExecute(svchpp, stmthpp,…); 释放一个会话: OCISessionEnd(); 删除到数据源的访问 : OCIServerDetach(servhpp, errhpp, OCI_DEFAULT); 释放句柄: OCIHandleFree((dvoid *) stmthpp, OCI_HTYPE_STMT);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值