Openssl数据安全传输平台014:OCCI环境搭建和使用:Centos8-Oracle19c代码跑通 + Window代码没跑通(不影响本项目)

文章目录

  • 0 代码仓库
  • 1 启动Centos oracle数据库
  • 2 Winsows安装配置OCCI库
    • 2.1 下载文件
    • 2.2 VS 配置
    • 2.2.1 VC++包含目录
    • 2.2.2 VC++库目录
    • 2.2.3 连接器-附加依赖项
    • 2.2.4 代码测试-Oracle11g
      • 2.2.4.1 准备
      • 2.2.4.2 代码测试
  • 3 Centos安装配置occi库
    • 3.0 强调
    • 3.1 下载instantclient库文件压缩包
    • 3.2 windows上解压
    • 3.3 把整个instantclient_12_2文件夹发送到普通用户的目录下
    • 3.4 将文件移动到/opt/instantclient_12_2
    • 3.4 创建软连接
    • 3.5 配置环境变量
  • 留个疑问
    • 3.5 测试
      • 3.5.1 源代码
      • 3.5.2 编译指令
      • 3.5.3 结果
    • 4 编译时候的相关报错
    • 4.1 ORA-24960: the attribute OCI_ATTR_USERNAME is greater than the maximum allowable length of 255
    • 4.2 编译不通过

0 代码仓库

1 启动Centos oracle数据库

  • Linux-CentOS8-Oracle19c 安装详解-含Navicate远程连接配置

  • Navicate远程连接Centos-Oracle19c:ORA-12541: TNS: no listener 无监听错误 - tcping 1521端口关闭

2 Winsows安装配置OCCI库

如何在windows下得到对应的occi的库和头文件

  • 方法一:
  • 从官方下载oracle客户端安装程序并且安装
    • 在对应的安装目录就可以找到头文件和库文件
  • 方法二:
  • 从官方直接下载官方编译好的库和头文件, 部署到window对应的目录下即可
  • 官方提供的库需要和vs的版本对应, 如果版本不对应, 就无法使用
    • 关闭提供的最新的版本支持到 vc14 -> vs2015
      • vs2017 0-> vc14.1

2.1 下载文件

  • 下载地址:
    https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html

下载相关文件,都解压缩到instantclient_12_2文件夹下。

在这里插入图片描述

2.2 VS 配置

2.2.1 VC++包含目录

方法一:使用InstantClient

D:\ProgramData\OCCI_InstantClient\instantclient_12_2\sdk\include

在这里插入图片描述
方法二:使用对应Windows平台下Oracle19c的安装目录

C:\Oracle19c\Oracle_19c_db_home\oci\include

在这里插入图片描述

2.2.2 VC++库目录

方法一:使用InstantClient

D:\ProgramData\OCCI_InstantClient\instantclient_12_2\sdk\lib\msvc\vc14

在这里插入图片描述
在这里插入图片描述

方法二:使用对应Windows平台下Oracle19c的安装目录

C:\Oracle19c\Oracle_19c_db_home\oci\lib\msvc\vc14

在这里插入图片描述在这里插入图片描述

2.2.3 连接器-附加依赖项

Debug模式下选择带_d的lib,发布的时候需要改成相应的release不带_d的

oraocci12d.lib

在这里插入图片描述

2.2.4 代码测试-Oracle11g

2.2.4.1 准备

在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.2.4.2 代码测试

无,因为环境原因,没有vs2017,代码跑不起来。网课上老师也说跑不起来。

3 Centos安装配置occi库

3.0 强调

一定要用普通用户完成整个过程,不要使用root用户。
否则后期使用普通用户编译程序的时候会找不到头文件和库文件。

3.1 下载instantclient库文件压缩包

下载地址
https://www.oracle.com/database/technologies/instant-client/downloads.html
在这里插入图片描述

1. 19.2版本的occi库我不会用,环境不会配,不知道是不是不兼容的原因。

然后换成12.2版可用
在这里插入图片描述

3.2 windows上解压

除了版本号,基本都差不多。
在这里插入图片描述

3.3 把整个instantclient_12_2文件夹发送到普通用户的目录下

在这里插入图片描述

3.4 将文件移动到/opt/instantclient_12_2

sudo mv /home/beza/Desktop/instantclient_12_2 /opt/instantclient_12_2//普通用户进入/opt/instantclient_12_2文件夹
cd /opt/instantclient_12_2

3.4 创建软连接

sudo ln -s libclntsh.so.12.1 libclntsh.so
sudo ln -s libclntshcore.so.12.1 libclntshcore.so
sudo ln -s libocci.so.12.1 libocci.sosudo ldconfig

在这里插入图片描述

3.5 配置环境变量

将以下环境变量写入/etc/profile中,对应的路径与上传的文件夹路径一致。在这里插入图片描述

# OCCI环境变量的修改
export OCCI_HOME=/opt/instantclient_12_2
export OCCI_INCLUDE_DIR=$OCCI_HOME/sdk/include
export OCCI_LIBRARY_PATH=$OCCI_HOME
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OCCI_LIBRARY_PATH
#程序编译时搜索的库目录
export LIBRARY_PATH=$LIBRARY_PATH:$OCCI_LIBRARY_PATH
#程序编译时搜索的头文件目录
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:$OCCI_INCLUDE_DIR

再 source一下,重新加载

source /etc/profile

在普通用户模式下更新环境变量

在这里插入图片描述再 source一下,重新加载
source ~/.bash_profile

留个疑问

为什么我的程序root用户能加载,但是普通用户缺不可以

3.5 测试

Oracle19c在Centos上安装时已经创建用户出c##beza,密码“123456”,和表dept.
在这里插入图片描述

3.5.1 源代码

#define _GLIBCXX_USE_CXX11_ABI 0
#include <iostream>
#include <occi.h>
using namespace std;
using namespace oracle::occi;int main()
{// 初始化连接环境Environment* env = Environment::createEnvironment();// 根据环境对象, 创建一个连接数据库服务器的实例// 参数: 用户名->oracle数据库用户名, 密码, 连接串// 连接串(oracle服务器地址): IP:端口/实例名// 192.168.21.23:1521/orclConnection* conn = env->createConnection("c##beza", "123456", "192.168.111.133:1521/ORCLCDB");printf("conn success...\n");// 主要的业务逻辑 -> 数据库操作-> 使用sql语句// 创建能够操作sql的对象Statement* st = conn->createStatement();// 给st对象指定要操作的sql语句// 假设要查询string sql = "select * from dept";printf("before get the result\n");// 知识设置, 没有查询st->setSQL(sql);// 执行sql语句// 返回ResultSet对象, 这个类中保存了查询到的结果ResultSet* result =  st->executeQuery(); // 遍历结果集, 使用next()while (result->next()){// 将当前记录的字段值取出// 看数据库表的设计 -> 需要要知道每个字段对应的数据类型// 取值的方法: get数据类型(字段在数据表中的位置[从1开始算]);cout << "no: " << result->getInt(1) << ","<< "name: " << result->getString(2) << ","<< "location: " << result->getString(3) << endl;}// 关闭查询的结果集 -> 释放资源closeResultst->closeResultSet(result);printf("before insert new value\n");// 数据库插入sql = "insert into dept values(1, 'Beza', 'California')";st->setSQL(sql);int ret = st->executeUpdate();cout << "insert return value: " << ret << endl;// 销毁statment对象conn->terminateStatement(st);// 销毁连接对象env->terminateConnection(conn);// 释放创建的环境对象Environment::terminateEnvironment(env);return 0;
}

3.5.2 编译指令

g++ occitest.cpp -locci -lclntsh

3.5.3 结果

在这里插入图片描述
在这里插入图片描述

4 编译时候的相关报错

4.1 ORA-24960: the attribute OCI_ATTR_USERNAME is greater than the maximum allowable length of 255

原因参考下文:

Oracle19c/OCCI-12.2编译cpp代码报错:ORA-24960:the attribute OCI_ATTR_USERNAME is greater than the maximum

4.2 编译不通过

GCC编译宏_GLIBCXX_USE_CXX11_ABI背景分析和实现原理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/124518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu 安装串口工具和添加虚拟串口

目录 一、串口工具安装 二、使用Windows本身虚拟的串口 &#xff08;一&#xff09;添加串口 1、保证虚拟机是关闭状态&#xff0c;打开“虚拟机设置”&#xff0c;点击“添加”。 2、选中“串行端口”&#xff0c;点击“完成”。 3、选中刚添加的串口&#xff0c;下拉选…

python快速入门

语法结构 基本输出 使用print函数来完成基本输出 print("I am xl")注释 单行注释使用# 多行注释 多行注释""" 多行注释 """缩进 python和其他语言最大的区别就是用缩进来区分子代码区域而不是大括号 续行 使用\符号来完成续行…

宠物用品小程序

近年来&#xff0c;越来越多的人选择将宠物视为家庭的一员&#xff0c;为宠物购买各种用品成为了一项重要的消费活动。因此&#xff0c;宠物用品小程序应运而生&#xff0c;为消费者提供了一个便捷的购买平台&#xff0c;同时也为宠物带来了更加幸福的生活。 登录乔拓云平台进入…

京东平台数据分析(京东销量):2023年9月京东吸尘器行业品牌销售排行榜

鲸参谋监测的京东平台9月份吸尘器市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年9月&#xff0c;京东吸尘器的销量为19万&#xff0c;环比下滑约12%&#xff0c;同比下滑约25%&#xff1b;销售额为1.2亿&#xff0c;环比下滑约11%&…

前端实现埋点监控

前端实现埋点&监控 实现埋点功能的意义主要体现在以下几个方面&#xff1a; 数据采集&#xff1a;埋点是数据采集领域&#xff08;尤其是用户行为数据采集领域&#xff09;的术语&#xff0c;它针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。通过埋…

本地生活商家用批量剪辑有用吗?

可以用&#xff0c;现在很多本地生活商家&#xff0c;都会通过借助批量剪辑工具来提升视频的曝光量&#xff0c;从而带动店铺的客流量。 推荐本地生活商家使用超级编导批量剪辑工具&#xff0c;这是一款0基础小白也可以很快上手的批量剪辑工具&#xff0c;剪辑页面布局以及功能…

python_PyQt5日周月K线纵向对齐显示_3_聚焦某段图形

目录 写在前面&#xff1a; 结果显示&#xff1a; 代码&#xff1a; 写在前面&#xff1a; “PyQt5日周月K线纵向对齐显示”&#xff0c;将分三篇博文描述 1 数据处理。将数据处理成适合图形显示的格式。&#xff08;已写&#xff0c;请看往期博文&#xff09; 2 显示工具…

不小心commit错误代码,还没push的回滚解决方法

命令&#xff1a;git reset --soft HEAD^ 第一步&#xff1a;找到项目所在文件夹 第二步&#xff0c;右键点击git base here 第三步&#xff0c;命令行输入git reset --soft HEAD^ 回车即可

【斗破年番】暗杀行动开始,萧炎斩杀负伤,彩鳞心疼霸气回击

【侵权联系删除】【文/郑尔巴金】 深度爆料&#xff0c;《斗破苍穹》年番第69集刚刚更新了&#xff01;在这集剧情中&#xff0c;萧炎和美杜莎筹划了一场暗杀行动&#xff0c;以保障炎盟的安全。他们根据小医仙提供的地图&#xff0c;分别负责击杀慕兰三老和雁落天这两位敌方强…

sql-50练习题0-5

sql练习题0-5题 前言数据库表结构介绍学生表课程表成绩表教师表 0-1 查询"01"课程比"02"课程成绩高的学生的信息及课程分数0-2查询"01"课程比"02"课程成绩小的学生的信息及课程分数0-3查询平均成绩大于等于60分的同学的学生编号和学生…

C语言 每日一题 PTA 10.30 day8

1.高空坠球 皮球从某给定高度自由落下&#xff0c;触地后反弹到原高度的一半&#xff0c;再落下&#xff0c;再反弹&#xff0c;……&#xff0c;如此反复。问皮球在第n次落地时&#xff0c;在空中一共经过多少距离&#xff1f;第n次反弹的高度是多少&#xff1f; 输入格式 : …

Element 多个Form表单 同时验证

一、背景 在一个页面中需要实现两个Form表单&#xff0c;并在页面提交时需要对两个Form表单进行校验&#xff0c;两个表单都校验成功时才能提交 所用技术栈&#xff1a;Vue2Element UI 二、实现效果 三、多个表单验证 注意项&#xff1a; 两个form表单&#xff0c;每个表单上…

R语言与作物模型(以DSSAT模型为例)融合应用

随着基于过程的作物生长模型&#xff08;Process-based Crop Growth Simulation Model&#xff09;的发展&#xff0c;R语言在作物生长模型和数据分析、挖掘和可视化中发挥着越来越重要的作用。想要成为一名优秀的作物模型使用者与科研团队不可或缺的人才&#xff0c;除了掌握对…

秒级启动的集成测试框架

本文介绍了一种秒级启动的集成测试框架&#xff0c;使用该框架可以方便的修改和完善测试用例&#xff0c;使得测试用例成为测试过程的产物。 背景 传统的单元测试&#xff0c;测试的范围往往非常有限&#xff0c;常常覆盖的是一些工具类、静态方法或者较为底层纯粹的类实现&…

PostMan 之 Mock 接口测试

在测试的时候经常会碰到后端开发工程师的接口还没有开发完成&#xff0c;但是测试任务已经分配过来。没有接口怎么测试呢&#xff1f; 测试人员可以通过 mock server 自己去造一个接口来访问。mock server 可用于模拟真实的接口。收到请求时&#xff0c;它会根据配置返回对应的…

桶装水送水多门店水票押金押桶小程序开发

桶装水送水多门店水票押金押桶小程序开发 用户注册和登录首页展示各门店的桶装水品牌和价格用户可以选择门店和水品牌&#xff0c;并下单购买桶装水用户可以选择送水时间和地址用户可以查看自己的订单历史和当前订单状态用户可以申请退款或修改订单信息门店可以登录后台管理系…

ORACLE运行的数据库突然连接报“无监听程序”

远程&#xff1a;用远程的数据库连接工具用localhost可以连接&#xff0c;用ip地址除127.0.0.1不可连接。 可能是日志文件满了&#xff0c;解决办法如下&#xff1a; 第一步&#xff1a;关闭数据库监听程序【任务管理器--》服务--》右键停止服务】 第二步&#xff1a;找到日志…

AR眼镜安卓主板,智能眼镜光机方案定制

AR智能眼镜是一项涉及广泛技术的创新产品&#xff0c;它需要考虑到光学、显示、功耗、散热、延迟、重量以及佩戴人体工学等多个方面的因素&#xff0c;每一个项目都是技术进步所需攻克的难题。 在本文中&#xff0c;我们将重点讨论AR眼镜的主板和光学方案。 首先是AR智能眼镜的…

【C++的OpenCV】第十四课-OpenCV基础强化(二):访问单通道Mat中的值之at()、ptr()、iscontinuous()

&#x1f389;&#x1f389;&#x1f389; 欢 迎 各 位 来 到 小 白 p i a o 的 学 习 空 间 &#xff01; \color{red}{欢迎各位来到小白piao的学习空间&#xff01;} 欢迎各位来到小白piao的学习空间&#xff01;&#x1f389;&#x1f389;&#x1f389; &#x1f496;&…

Netty复习:(2)IdleStateHandler的用法

一、handler定义&#xff1a; package handler;import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter;public class MyChatServerHandler3 extends ChannelInboundHandlerAdapter {Overridepublic void userEventTriggered(…