Oracle 本地客户端连接远程 Oracle 服务端并使用 c# 连接测试

这里写自定义目录标题

  • 前言
  • Oracle 客户端安装
    • 先决条件
    • 下载 Oracle 客户端
    • Oracle 客户端环境变量配置
  • PL/SQL
    • PL/SQL 下载
    • PL/SQL 配置
  • 配置远程连接
    • tnsnames.ora 文件配置
  • 使用 PL/SQL 连接远程数据库
  • 使用 C# 远程访问 Oracle 数据库
  • 结语

前言

最近有一个需要使用本地的 Oracle 客户端连接远程 Oracle 服务端并且需要用 c# 跑通。我在网上查询了一些资料最终实现了这个需求,但是发现这些资料缺胳膊少腿的,要不就是表述不清,我现在尝试将这些资料整合写一个表述明确的文档。

Oracle 客户端安装

先决条件

需要明确的是如果你的 Oracle 服务端是 64 位则客户端也需要下载 64 位的,PL/SQL 也需要下载 64 位的。我下载的是 32 位的 Oracle 服务端因此文档中都以 32 位为主

下载 Oracle 客户端

下载地址:Oracle 客户端下载地址
在这里插入图片描述
下载完成后进入文件夹点击 setup.exe 进行安装,会弹出 cmd 窗口稍等几秒钟。
在这里插入图片描述进入安装

  • 第一步
    在这里插入图片描述

  • 第二步
    在这里插入图片描述

  • 第三步:安装位置放在自己专门安装软件的文件夹中即可,按个人喜好来
    在这里插入图片描述

  • 第四步:先决环境检查,稍等几秒
    在这里插入图片描述

  • 第五步:安装
    在这里插入图片描述

Oracle 客户端环境变量配置

  • 第一步:打开环境变量
    在这里插入图片描述
  • 第二步
    在这里插入图片描述
  • 第三步:设置环境变量
    在这里插入图片描述

要设置两个环境变量
在这里插入图片描述
在这里插入图片描述

PL/SQL

PL/SQL 下载

PL/SQL 下载地址:PL/SQL 管网下载地址
在这里插入图片描述
注意,我下载的是 32 位的 PL/SQL, 各位请按需下载

PL/SQL 配置

  • 第一步
    在这里插入图片描述
  • 第二步
    在这里插入图片描述
    这里是自动检测的,在这里点击确定然后退出 PL/SQL 。

配置远程连接

tnsnames.ora 文件配置

  • 第一步:进入你安装的 Oracle 客户端的文件夹中
    在这里插入图片描述
  • 第二步:进入 network 文件夹中的 admin 文件夹
    在这里插入图片描述
  • 第三步:新建一个 tnsnames.ora 文本文件
    在这里插入图片描述
  • 第四步:配置 tnsnames.ora
# tnsnames.ora Network Configuration File: E:\02_Sofrware\01_Apps\Oracle_Client_32_19c\product\19.0.0\client_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.192.168.1.234 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.234)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))

以上是我自己配置,下面我来解释一些参数


自定义参数1 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 自定义参数2)(PORT = 自定义参数3)))(CONNECT_DATA =(SERVICE_NAME = 自定义参数4)))

自定义参数:是可以自己定义的
自定义参数1:要连接的服务名
自定义参数2:服务器 IP 地址
自定义参数3:服务器上 Oracle 数据库的端口号
自定义参数4:服务器上 Oracle 数据库的实例名一般都是 orcl

使用 PL/SQL 连接远程数据库

在这里插入图片描述
用户名那一栏中填写的是服务器中 Oracle 数据库的用户名和密码,system 是用户名,ORACLEDATABASE 是密码。
数据库那一栏中填写的就是在 tnsnames.ora 文件中配置的 自定义参数1要连接的服务名

使用 C# 远程访问 Oracle 数据库

  • 第一步:使用 Nuget 包管理器安装 Oracle 驱动包
    在这里插入图片描述
    在这里插入图片描述
  • 第二步:编写代码实现
public static void Main(string[] args) {Console.WriteLine("启动");//数据库连接字串string conString = "User Id=system;Password=ORACLEDATABASE;Data Source=192.168.1.234;";using (OracleConnection con = new OracleConnection(conString)) {using (OracleCommand cmd = con.CreateCommand()) {try { con.Open();cmd.BindByName = true;cmd.CommandText = "SELECT * FROM Persons";OracleDataReader reader = cmd.ExecuteReader();while (reader.Read()) {Console.WriteLine($"ID:{reader.GetString(0)}");Console.WriteLine($"NAME:{reader.GetString(1)}");Console.WriteLine($"ADDRESS:{reader.GetString(2)}");Console.WriteLine($"AGE:{reader.GetString(3)}");}Console.WriteLine();Console.WriteLine("Press 'Enter' to continue");}catch (Exception ex) { Console.WriteLine(ex.ToString());}Console.ReadLine();}}
}

运行结果:
在这里插入图片描述

结语

至此本文档结束,如果感觉还有什么不明确的可以留言。

  • 如何查询 Oracle 数据库实例
    查询 Oracle 数据库实例

  • 相关教程
    PL/SQL 安装下载使用
    Oracle 客户端下载教程
    Oracle 客户端连接远程 Oracle 数据库

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

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

相关文章

即时通讯开发中的性能优化技巧

即时通讯开发在如今的数字化社会中扮演着重要角色,然而,随着用户对即时通讯应用的需求不断增长,开发者们面临着使其应用保持高性能和可靠性的挑战。本文将探讨即时通讯开发中关键的性能优化技巧,帮助开发者们提升应用的用户体验和…

C语言:指针类型的意义

1.指针的类型决定了解引用时访问几个字节 2.指针的类型决定了指针1、-1跳过几个字节 一、指针的类型决定指针解引用时访问几个字节 例如 int 型指针解引用时访问4个字节 char 型指针解引用时访问1个字节 详解代码如下: int b 0x11223344(十六进制&…

CSS 滚动容器与固定 Tabbar 自适应的几种方式

问题 容器高度使用 px 定高时,随着页面高度发生变化,组件展示的数量不能最大化的铺满,导致出现底部留白。容器高度使用 vw 定高时,随着页面宽度发生变化,组件展示的数量不能最大化的铺满,导致出现底部留白…

【操作系统】聊聊文件传输的零拷贝、PageCache、异步IO机制

在目前主流的系统中,其实大多数都是数据密集型系统,所以设计数据密集型应用一书非常经典,推荐一读。而大多数遇到的问题都是存储问题。CPU、内存 因为本身的读写速度比较快,所以磁盘就成为了一个性能瓶颈。 针对磁盘优化的技术层…

Harbor 私有仓库迁移

文章目录 一.私有仓库迁移的介绍1.为何要对Harbor 私有仓库的迁移2.Harbor 私有仓库的迁移特点3. Harbor 私有仓库的迁移注意要点 二.私有仓库迁移配置1.源Harbor配置(192.168.198.11)(1)接着以下操作查看容器状况及是否可以登录 …

C语言之数组题

目录 1.使用函数实现数组操作 2.冒泡排序 3.三子棋 4.【一维数组】交换数组 5.扫雷 6.概念辨析tips 我又来了,今天是数组题,本人还在补军训真的热!🆗 1.使用函数实现数组操作 2.冒泡排序 3.三子棋 4.【一维数组】交换数组 …

Windows10 系统安装教程

多虚不如少实。 一、 下载安装包 下载前景:网上下载的 windows10 系统一般都有捆绑软件,用户体验不爽,所以建议到 正规渠道下载 windows10 系统的不同版本。另外网上也有一些 windows10 系统的镜像文件 可以直接一键安装,…

科技政策 | 四川省科学技术厅关于发布2024年第一批省级科技计划项目申报指南的通知

原创 | 文 BFT机器人 近日,四川省科学技术厅发布了2024年第一批省级科技计划项目申报指南;其中包括自然科学基金项目、重点研发计划、科技成果转移转化引导计划、科技创新基地(平台)和人才计划。 01 自然科学基金项目 实施周期 …

YOLOv5引入FasterNet主干网络,目标检测速度提升明显

目录 一、背景介绍1.1 目标检测算法简介1.2 YOLOv5简介及发展历程 二、主干网络选择的重要性2.1 主干网络在目标检测中的作用2.2 YOLOv5使用的默认主干网络 三、FasterNet简介与原理解析3.1 FasterNet概述3.2 FasterNet的网络结构3.2.1 基础网络模块3.2.2 快速特征融合模块3.2.…

打造互动体验:品牌 DTC 如何转变其私域战略

越来越多的品牌公司选择采用DTC 模式与消费者进行互动,而非仅仅销售产品。通过与消费者建立紧密联系,DTC模式不仅可以提供更具成本效益的规模扩张方式,还能够控制品牌体验、获取宝贵的第一方数据并提升盈利能力。然而DTC模式的经济模型比许多…

【C++】—— 异常处理

前言: 本期,我将给大家讲解的是有关 异常处理 的相关知识! 目录 (一)C语言传统的处理错误的方式 (二)C异常概念 (三)异常的使用 1、异常的抛出和捕获 1️⃣ 异常的…

【LeetCode-中等题】98. 验证二叉搜索树

文章目录 题目方法一:BFS 层序遍历方法二: 题目 方法一:BFS 层序遍历 利用层序遍历 拿到每一个节点 并且给每一个结点配备一个最大值和最小值的队列 只要节点在最大值和最小值之间就满足二叉搜索树的条件 public boolean isValidBST(TreeNo…

三电平离网逆变器接不平衡负载仿真

文章目录 **0、系统框图****1、纯阻性负载R****2、纯感性负载L****3、纯容性负载C****4、 RL负载****5、RC负载****6、CL负载****7、RLC负载** 0、系统框图 闭环控制 PWM调制 逆变桥 LCL滤波电路 负载(可配置) 坐标变换(采样得到)…

HTTP:http上传文件的原理及java处理方法的介绍

为了说明原理&#xff0c;以下提供一个可以上传多个文件的例子&#xff0c;html页面代码如下&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>http upload file</title> </head> <body>…

《存储IO路径》专题:IO虚拟化初探

大家好&#xff0c;欢迎来到今天的科技小课堂。今天我们要聊聊的是一项非常有趣且实用的技术——I/O虚拟化&#xff08;Input/Output Virtualization&#xff0c;简称IOV&#xff09;。想象一下&#xff0c;如果把物理硬件资源比作一道丰盛的大餐&#xff0c;那么IOV就是那位神…

【VRRP】虚拟路由冗余协议

什么是VRRP&#xff1f; 虚拟路由冗余协议VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09;是一种用于提高网络可靠性的容错协议。通过VRRP&#xff0c;可以在主机的下一跳设备出现故障时&#xff0c;及时将业务切换到备份设备&#xff0c;从而保障网络通信的…

SQL注入之联合查询

文章目录 联合查询是什么&#xff1f;联合查询获取cms账号密码尝试登录 联合查询是什么&#xff1f; 适用数据库中的内容会回显到页面中来的情况。联合查询就是利用union select 语句&#xff0c;该语句会同时执行两条select 语句&#xff0c;实现跨库、跨表查询。 必要条件 两…

电商API接口的研发和应用!

API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;指的是为不同的软件应用程序提供编程接口的一组协议、规则以及工具的集合&#xff0c;以便它们能够互相交互&#xff0c;实现数据通信和功能调用。API已成为了现代软件开发和商业应用…

countDown+react+hook

道阻且长&#xff0c;行而不辍&#xff0c;未来可期 知识点一&#xff1a; new Date().getTime()可以得到得到1970年01月1日0点零分以来的毫秒数。单位是毫秒 new Date().getTime()/1000获取秒数1分钟60秒&#xff0c;1小时60分钟1hour:60*60>单位是秒 60*60*1000>单位…

Gin 框架入门实战系列(一)

GIN介绍 Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点 对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错 借助框架开发,不仅可以省去很多常用的封装带来的时间,…