Openssl数据安全传输平台014:OCCI的安装配置和使用:Centos8-Oracle19c代码跑通 + Window-Oracle11g代码没跑通(不影响本项目)

news2024/9/24 4:22:41

文章目录

  • 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.1 下载instantclient库文件压缩包
    • 3.2 windows上解压
    • 3.3 把整个instantclient_12_2文件夹发送到Linux的opt目录下
    • 3.4 配置环境变量
    • 3.5 测试
      • 3.5.1 源代码
      • 3.5.2 编译指令
      • 3.5.3 结果
    • 编译时候的相关报错

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_19_20文件夹下。

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

2.2 VS 配置

2.2.1 VC++包含目录

方法一:使用InstantClient

D:\ProgramData\OCCI_InstantClient\instantclient_19_20\sdk\include

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

C:\Oracle19c\Oracle_19c_db_home\oci\include

在这里插入图片描述

2.2.2 VC++库目录

方法一:使用InstantClient

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

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

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

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

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

2.2.3 连接器-附加依赖项

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

oraocci19d.lib

在这里插入图片描述

2.2.4 代码测试-Oracle11g

2.2.4.1 准备

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

2.2.4.2 代码测试

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

3 Centos安装配置occi库

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文件夹发送到Linux的opt目录下

在这里插入图片描述

3.4 配置环境变量

将以下环境变量写入/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

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/orcl
	Connection* 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;
	}

	// 关闭查询的结果集 -> 释放资源closeResult
	st->closeResultSet(result);
	  printf("before insert new value\n");
	// 数据库插入
	sql = "insert into dept values(33, '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 结果

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

编译时候的相关报错

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

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

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

相关文章

LeetCode:1465. 切割后面积最大的蛋糕(C++)

目录 1465. 切割后面积最大的蛋糕 题目描述&#xff1a; 实现代码与解析&#xff1a; 贪心 原理思路&#xff1a; 1465. 切割后面积最大的蛋糕 题目描述&#xff1a; 矩形蛋糕的高度为 h 且宽度为 w&#xff0c;给你两个整数数组 horizontalCuts 和 verticalCuts&#xff…

HPV感染的风险:闫会宁主任分析酒店环境中的常见因素

人类乳头瘤病毒(HPV)是一种普遍存在的病毒&#xff0c;其存在和传播方式多种多样。近年来&#xff0c;人们对于HPV的认识不断深入&#xff0c;知道其在酒店环境中的传播风险。本文将探讨哪些情况下在酒店可能感染HPV。 一、HPV的传播方式 HPV主要通过直接接触传播&#xff0c…

编程实例:眼镜店顾客档案管理系统软件,可以登记顾客信息查询历史记录,视力检查登记查询,配镜销售单开单打印

编程实例&#xff1a;眼镜店顾客档案管理系统软件&#xff0c;可以登记顾客信息查询历史记录&#xff0c;视力检查登记查询&#xff0c;配镜销售单开单打印 编程系统化课程总目录及明细&#xff0c;点击进入了解详情。 https://blog.csdn.net/qq_29129627/article/details/1340…

centos 安装ifconfig等

通过ip addr查看IP ip addr 安装ifconfig yum search ifconfig yum -y install net-tools.x86_64 设置静态IP cd /etc/sysconfig/network-scripts/ cat ifcfg-ens33 vi ifcfg-ens33 文本demo&#xff1a; TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFRO…

【shell】pis_monitor.sh

#!/bin/bashread -p "请输入要查询的PID:" pidecho "--------------------------------"echo "进程PID:$pid"p_arr("进程命令 11" "进程所属用户 1" "CPU占用率 2" "CPU内存占用率 4" "进程开始运…

yolov8-pose的数据集标注

labelme标注工具 1.环境配置 conda create -n labelme sudo apt-get install python3-pyqt5 # PyQt5 sudo pip3 install labelme2.激活虚拟环境,并启动labelme conda activate labelme labelme参考链接:图片标注工具Labelme的安装及使用方法 3.数据集标注 在标注时,我…

终于找到一个很赞的相亲社交软件了,而且还是公众号java+vue

目前&#xff0c;相亲已经成为了时下的热门话题&#xff0c;越来越多的单身男女找不到心仪的另一半&#xff0c;忙碌的工作&#xff0c;空余时间很少。其次离开校园之后&#xff0c;圈子变小&#xff0c;也没有渠道认识到新的朋友&#xff0c;种种情况影响下&#xff0c;单身的…

PHP-FIG底层原理以及所有规范

PHP-FIG是PHP Framework Interoperability Group的简称&#xff0c;是一个致力于制定PHP规范和标准化的组织。它的目标是提高不同PHP框架之间的互操作性和兼容性&#xff0c;促进PHP开发社区的合作和共享。 PSR标准规范了一些常用的编码规范、类自动加载规范、接口规范等。这些…

大数据-Storm流式框架(六)---Kafka介绍

Kafka简介 Kafka是一个分布式的消息队列系统(Message Queue)。 官网&#xff1a;Apache Kafka 消息和批次 kafka的数据单元称为消息。消息可以看成是数据库表的一行或一条记录。 消息由字节数组组成&#xff0c;kafka中消息没有特别的格式或含义。 消息有可选的键&#x…

龙芯3A5000上安装微信

原文链接&#xff1a;龙芯3A5000上安装微信 hello&#xff0c;大家好啊&#xff0c;今天给大家带来一篇在龙芯3A5000上安装微信的文章&#xff0c;主要给大家展示一下在龙芯架构上使用微信的情况&#xff0c;看看内置浏览器、看一看、小程序等是否能正常打开使用。 1、查看系统…

将项目部署到Windows操作系统中,并且访问该项目

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这个专…

react实现步进器

创建一个步进器组件&#xff0c;包含当前步骤&#xff08;currentStep&#xff09;的状态以及前进和后退的操作&#xff1a; import React, { useState } from react;function Stepper() {const [currentStep, setCurrentStep] useState(1);const handleNext () > {setCu…

大厂面试题-Java并发编程基础篇(五)

目录 一、为什么ConcurrentHashMap中key不允许为null 考察目标 问题解析 回答 二、ThreadLocal会出现内存泄漏吗&#xff1f; 考察目的 问题解析 回答 三、什么是CompletableFuture&#xff1f; 问题分析 问题解答 四、什么条件下会产出死锁&#xff0c;如何避免死…

万字解析设计模式之单例模式

一、概述 1.1简介 单例模式&#xff08;Singleton Pattern&#xff09;是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保…

MyBatis-Plus 实战教程二 核心功能

这里写目录标题 核心功能条件构造器QueryWrapperUpdateWrapperLambdaQueryWrapper 自定义SQL基本用法多表关联 Service接口CRUD基本用法Lambda批量新增 仓库地址 核心功能 条件构造器 除了新增以外&#xff0c;修改、删除、查询的SQL语句都需要指定where条件。因此BaseMapper…

6 个最佳 Windows 免费磁盘分区管理器

几乎所有新的笔记本电脑和 PC 都只有一个分区 C:\&#xff0c;与安装了 Windows 的分区相同。不太精通技术的用户开始按照计算机呈现给他们的方式使用计算机&#xff1b;他们将所有文档、个人文件&#xff08;例如图片、歌曲、电影等&#xff09;放在同一个分区上。整个驱动器上…

vite中将css,js文件归类至文件夹

build: {chunkSizeWarningLimit: 1500,rollupOptions: {output: {// 最小化拆分包manualChunks(id) {if (id.includes(node_modules)) {return id.toString().split(node_modules/)[1].split(/)[0].toString()}},// 用于从入口点创建的块的打包输出格式[name]表示文件名,[hash]…

github搜索技巧探索

毕设涉及到推荐系统&#xff0c;那么就用搜索推荐系统相关资料来探索一下GitHub的搜搜技巧 文章目录 1. 基础搜索2. 限定在特定仓库搜索3. 按照语言搜索4. 按照star数量搜索5. 搜索特定用户/组织的仓库6. 查找特定文件或路径7. 按时间搜索8. 搜索不包含某个词的仓库9. 搜索特定…

python:多波段遥感影像分离成单波段影像

作者:CSDN @ _养乐多_ 在遥感图像处理中,我们经常需要将多波段遥感影像拆分成多个单波段图像,以便进行各种分析和后续处理。本篇博客将介绍一个用Python编写的程序,该程序可以读取多波段遥感影像,将其拆分为单波段图像,并保存为单独的文件。本程序使用GDAL库来处理遥感影…

Android-登录注册页面(第三次作业)

第三次作业 - 登录注册页面 题目要求 嵌套布局。使用线性布局的嵌套结构&#xff0c;实现登录注册的页面。&#xff08;例4-3&#xff09; 创建空的Activity 项目结构树如下图所示&#xff1a; 注意&#xff1a;MainActivity.java文件并为有任何操作&#xff0c;主要功能集中…