ASP.NET |日常开发中连接Oracle数据库详解

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

ASP.NET |日常开发中连接Oracle数据库详解

  • 前言
  • 一、安装和配置 Oracle 数据访问组件
    • 1.1 安装ODP.NET(Oracle Data Provider for.NET):
    • 1.2 引用相关程序集:
  • 二、配置连接字符串
    • 2.1 连接字符串的基本组成部分:
    • 2.2 不同连接方式的连接字符串示例
    • 2.3 执行数据库操作(以查询为例)
    • 2.4 插入、更新和删除操作(类似查询操作)
  • 结束语
  • 优质源码分享

ASP.NET |日常开发中连接Oracle数据库详解,在ASP.NET日常开发中,连接Oracle数据库并执行数据操作是一个常见的需求。为了实现与Oracle数据库的交互,你通常需要使用Oracle提供的数据访问组件,如Oracle Data Provider for .NET (ODP.NET)。以下是一个详细的步骤指南,介绍如何在ASP.NET应用程序中连接Oracle数据库。

前言

        在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。

一、安装和配置 Oracle 数据访问组件

1.1 安装ODP.NET(Oracle Data Provider for.NET):

    ODP.NET是 Oracle 官方提供的用于在.NET 应用程序中访问 Oracle 数据库的数据访问组件。可以从 Oracle 官方网站下载适合的ODP.NET版本并进行安装。安装过程中需要根据你的开发环境(如 32 位或 64 位)和 Oracle 数据库版本进行选择。

1.2 引用相关程序集:

    在ASP.NET项目中,安装好ODP.NET后,需要在项目中引用相关的程序集。在解决方案资源管理器中,右键单击项目,选择 “添加引用”,然后在引用管理器中找到并添加Oracle.ManagedDataAccess(如果使用的是托管驱动)或Oracle.DataAccess(非托管驱动,不过在较新的开发中推荐使用托管驱动)程序集。同时,在代码文件中添加相应的using语句,如using Oracle.ManagedDataAccess.Client;(对于托管驱动)。

二、配置连接字符串

2.1 连接字符串的基本组成部分:

    连接 Oracle 数据库的连接字符串包含多个关键部分。一个典型的连接字符串格式如下:

       string connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=your_host)(PORT=your_port))(CONNECT_DATA=(SERVICE_NAME=your_service_name)));User ID=your_user_id;Password=your_password";

    Data Source部分用于指定数据库的数据源信息,包括服务器地址(HOST)、端口(PORT)和服务名(SERVICE_NAME)。User ID和Password分别是用于登录数据库的用户名和密码。

2.2 不同连接方式的连接字符串示例

  • 使用 TNS 别名(如果已经配置了 TNS 别名):

    如果在TNSNAMES.ORA文件(通常位于ORACLE_HOME/network/admin目录下)中已经配置了 TNS 别名,可以直接在连接字符串中使用。例如:

           string connectionString = "Data Source=your_tns_alias;User ID=your_user_id;Password=your_password";
  • 连接到本地数据库(默认实例):

    对于本地安装的 Oracle 数据库,并且使用默认实例,可以使用类似如下的连接字符串:

           string connectionString = "Data Source=localhost/orcl;User ID=system;Password=your_password";

    这里假设本地数据库服务名为orcl,用户名是system。
    建立数据库连接
    创建连接对象并打开连接:
    使用OracleConnection(对于Oracle.DataAccess)或Oracle.ManagedDataAccess.Client.OracleConnection(对于Oracle.ManagedDataAccess)类来创建连接对象。例如:

       OracleConnection connection = new OracleConnection(connectionString);try{connection.Open();// 在这里可以执行数据库操作}catch (OracleException ex){Console.WriteLine($"数据库连接错误: {ex.Message}");}finally{connection.Close();}

    在try - catch - finally块中,try部分用于打开连接并执行后续的数据库操作;catch部分用于捕获连接过程中可能出现的 Oracle 相关异常,如网络问题、权限问题等;finally部分确保无论操作是否成功,连接都会被关闭,以释放资源。

2.3 执行数据库操作(以查询为例)

  • 构建查询语句:

    在 Oracle 数据库中,查询数据使用SELECT语句。例如,查询一个名为employees表中所有员工的姓名和部门的 SQL 语句如下:

       SELECT employee_name, department_name FROM employees;
  • 在 C# 中执行查询操作:

    创建OracleCommand对象并设置查询语句和连接:

       string selectQuery = "SELECT employee_name, department_name FROM employees";OracleCommand command = new OracleCommand(selectQuery, connection);OracleDataReader reader;try{reader = command.ExecuteReader();while (reader.Read()){string name = reader.GetString(0);string department = reader.GetString(1);Console.WriteLine($"姓名: {name}, 部门: {department}");}reader.Close();}catch (OracleException ex){Console.WriteLine($"数据查询错误: {ex.Message}");}

    首先通过ExecuteReader方法执行查询语句,返回一个OracleDataReader对象。然后使用reader.Read方法遍历结果集,通过GetString(也可以根据数据类型使用GetInt32、GetDate等方法)方法获取相应列的值,这里列索引从 0 开始。最后要记得关闭OracleDataReader对象,以释放资源。

2.4 插入、更新和删除操作(类似查询操作)

  • 插入操作:

    构建插入语句:在 Oracle 中,插入数据使用INSERT INTO语句。例如,插入一条员工记录到employees表的 SQL 语句如下:

       INSERT INTO employees (employee_name, department_name) VALUES ('John Doe', 'IT');

    在 C# 代码中,使用OracleCommand对象执行插入操作:

       string insertQuery = "INSERT INTO employees (employee_name, department_name) VALUES (:name, :department)";OracleCommand command = new OracleCommand(insertQuery, connection);command.Parameters.Add(":name", OracleDbType.Varchar2).Value = "John Doe";command.Parameters.Add(":department", OracleDbType.Varchar2).Value = "IT";try{int rowsAffected = command.ExecuteNonQuery();if (rowsAffected > 0){Console.WriteLine("数据插入成功。");}}catch (OracleException ex){Console.WriteLine($"数据插入错误: {ex.Message}");}

    这里使用了参数化查询,通过Parameters.Add方法添加参数,参数名以:开头(这是 Oracle 参数化查询的格式)。然后使用ExecuteNonQuery方法执行插入操作,根据返回的受影响行数判断插入是否成功。

  • 更新操作:

    构建更新语句:在 Oracle 中,更新数据使用UPDATE语句。例如,更新employees表中员工姓名为John Doe的部门为HR的 SQL 语句如下:

       UPDATE employees SET department_name = 'HR' WHERE employee_name = 'John Doe';

    在 C# 代码中构建和执行更新语句:

       string updateQuery = "UPDATE employees SET department_name = :newDepartment WHERE employee_name = :name";OracleCommand command = new OracleCommand(updateQuery, connection);command.Parameters.Add(":newDepartment", OracleDbType.Varchar2).Value = "HR";command.Parameters.Add(":name", OracleDbType.Varchar2).Value = "John Doe";try{int rowsAffected = command.ExecuteNonQuery();if (rowsAffected > 0){Console.WriteLine("数据更新成功。");}}catch (OracleException ex){Console.WriteLine($"数据更新错误: {ex.Message}");}

    同样使用参数化查询构建更新语句,通过ExecuteNonQuery方法执行更新操作,根据返回的受影响行数判断更新是否成功。

  • 删除操作:

    构建删除语句:在 Oracle 中,删除数据使用DELETE FROM语句。例如,删除employees表中员工姓名为John Doe的记录的 SQL 语句如下:

       DELETE FROM employees WHERE employee_name = 'John Doe';

    在 C# 代码中构建和执行删除语句:

       string deleteQuery = "DELETE FROM employees WHERE employee_name = :name";OracleCommand command = new OracleCommand(deleteQuery, connection);command.Parameters.Add(":name", OracleDbType.Varchar2).Value = "John Doe";try{int rowsAffecteds = command.ExecuteNonQuery();if (rowsAffecteds > 0){Console.WriteLine("数据删除成功。");}}catch (OracleException ex){Console.WriteLine($"数据删除错误: {ex.Message}");}

    还是使用参数化查询构建删除语句,然后执行ExecuteNonQuery方法,根据返回的受影响行数判断删除是否成功。

结束语

        亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

         愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

        至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


--------------- 业精于勤,荒于嬉 ---------------

请添加图片描述

--------------- 行成于思,毁于随 ---------------

优质源码分享

  • 【百篇源码模板】html5各行各业官网模板源码下载

  • 【模板源码】html实现酷炫美观的可视化大屏(十种风格示例,附源码)

  • 【VUE系列】VUE3实现个人网站模板源码

  • 【HTML源码】HTML5小游戏源码

  • 【C#实战案例】C# Winform贪吃蛇小游戏源码


在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 大屏可视化 带你体验酷炫大屏

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署(有自己的阿里云);
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/144309281(防止抄袭,原文地址不可删除)

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

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

相关文章

【linux系统】基础开发工具(yum、Vim)

1. 软件包管理器 1.1 什么是软件包 在Linux下安装软件, ⼀个通常的办法是下载到程序的源代码, 并进⾏编译, 得到可执⾏程序. 但是这样太麻烦了, 于是有些⼈把⼀些常⽤的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在⼀个服务器上, 通过包管理器可以很⽅便的…

C语言:define定义常量和定义宏(详解)

本篇博客给大家带来的是#define定义常量和#define定义宏的方法 🐟🐟文章专栏:C语言 🚀🚀若有问题评论区下讨论,我会及时回答 ❤❤欢迎大家点赞、收藏、分享 你们的支持就是我创造的动力 今日思想&#xff1…

Let up bring up a linux.part2 [十一]

之前的篇幅中我们已经将 Linux 内核 bringup 起来了,不知道大家有没有去尝试将根文件系统运行起来,今天我就带领大家完成这个事情,可以跟着下面的步骤一步步来完成: 在这里我们使用 busybox 构建 rootfs: 下载 busyb…

使用GO--Swagger生成文档

概述 在前后端分离的项目中,后端配置swagger可以很好的帮助前端人员了解后端接口参数和数据传输。go-swagger 是一个功能全面且高性能的Go语言实现工具包,用于处理Swagger 2.0(即OpenAPI 2.0)规范。它提供了丰富的工具集&#x…

pushgateway HA高可用方案

未经本人同意不得转载,若引用请附上原文链接。 项目使用flink来处理kafka中的无界流数据,采用的是flink on yarn的模式部署flink任务。最近做flink任务的监控过程中,踩了一些坑。下面是过程,只想看最终方案的直接拉到最后。 先说…

01-Chromedriver下载与配置(mac)

下载地址: 这里我用的最后一个,根据自己chrome浏览器选择相应的版本号即可 ChromeDriver官网下载地址:https://sites.google.com/chromium.org/driver/downloads ChromeDriver官网最新版下载地址:https://googlechromelabs.git…

使用docker-compose安装Milvus向量数据库及Attu可视化连接工具

首先确保系统已经安装上了docker 然后去https://github.com/docker/compose/releases/下载安装docker-compose 跟随自己下系统和服务器情况下载 上传到服务器 mv docker-compose-linux-aarch64 docker-compose chmod x docker-compose2.dockr-compose命令 docker-compose …

Conda + JuiceFS :增强 AI 开发环境共享能力

Conda 是当前 AI 应用开发领域中非常流行的环境和包管理系统,因其能够简单便捷地创建与系统资源相隔离的虚拟环境广受欢迎。 Conda 支持在不同的操作系统上重建相同的工作环境,但在环境共享复用方面仍存在一些挑战。比如,在不同机器上复用相…

【SpringBoot】31 Session + Redis 实战

Gitee https://gitee.com/Lin_DH/system 介绍 【SpringBoot】30 Cookie、Session、Token https://blog.csdn.net/weixin_44088274/article/details/144241595 背景 Spring Session 是 Spring 的一个子项目,它提供了一种管理用户会话信息的方法,无论…

关于网站的权重和百度蜘蛛爬虫的关系

网站的权重和百度蜘蛛爬虫的关系是密切关联的。 网站权重是一个衡量网站在搜索引擎中重要性的概念,它反映了网站在搜索引擎算法中的相对重要程度。而百度蜘蛛爬虫则是百度搜索引擎用来抓取网页内容的工具,通过分析网页的URL、内容、链接等因素来评估网站…

游戏引擎学习第35天

开场介绍 今天的任务是继续改进一个虚拟的瓦片地图系统,使其适合处理更大的世界。我们希望这个系统能管理大范围的游戏世界,其中包含按需存储的小区域。昨天,我们介绍了“内存区域”的概念,用于管理持久性存储。我们计划今天继续…

Leetcode经典题5--轮转数组

题目描述 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 输入输出示例 : 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右…

【JS】简单CSS简单JS写的上传进度条

纯JS写的&#xff0c;简单的上传进度条&#xff0c;当上传的文件较大&#xff0c;加一个动态画面&#xff0c;就不会让人觉得出错了或网络卡了 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"v…

2023 年“泰迪杯”数据分析技能赛B 题企业财务数据分析与造假识别

2023 年“泰迪杯”数据分析技能赛B 题企业财务数据分析与造假识别 一、背景 财务数据是指企业经营活动和财务结果的数据记录&#xff0c;反映了企业的财务状况与经营成果。对行业、企业的财务数据进行分析&#xff0c;就是要评价其过去的经营业绩、衡量现在的财务状况、预测未…

perl Window安装教程

perl Window安装教程 下载地址 https://platform.activestate.com/tangxing806/ActivePerl-5.28/distributions 运行state-remote-installer.exe 按下图截图步骤 检查perl版本 参考文献&#xff1a; perl安装教程

知识图谱9:知识图谱的展示

1、知识图谱的展示有很多工具 Neo4j Browser - - - - 浏览器版本 Neo4j Desktop - - - - 桌面版本 graphX - - - - 可以集成到Neo4j Desktop Neo4j 提供的 Neo4j Bloom 是用户友好的可视化工具&#xff0c;适合非技术用户直观地浏览图数据。Cypher 是其核心查询语言&#x…

【数据分享】1901-2023年我国省市县三级逐年最低气温数据(Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月最低气温栅格数据和Excel和Shp格式的省市县三级逐月最低气温数据&#xff0c;原始的逐月最低气温栅格数据来源于彭守璋学者在国家青藏高原科学数据中心平台上分享的数据&#xff01;基于逐月栅格数据我们采用求年平均值的方法得到逐年最…

HBU深度学习实验15-循环神经网络(2)

LSTM的记忆能力实验 飞桨AI Studio星河社区-人工智能学习与实训社区 (baidu.com) 长短期记忆网络&#xff08;Long Short-Term Memory Network&#xff0c;LSTM&#xff09;是一种可以有效缓解长程依赖问题的循环神经网络&#xff0e;LSTM 的特点是引入了一个新的内部状态&am…

使用windows的包管理工具chocolatey

开发人员&#xff0c;在windows环境下&#xff0c;最头疼的是安装和配置各种环境变量&#xff0c;现在chocolatey 可以一键安装&#xff0c;不需要再去配置环境变量了。比如你安装一个java的环境&#xff0c;仅仅需要你敲几个命令&#xff0c;都能帮你搞定。 我自己已经使用这…

VTK知识学习(21)- 数据的读写

1、前言 对于应用程序而言&#xff0c;都需要处理特定的数据&#xff0c;VTK应用程序也不例外。 VTK应用程序所需的数据可以通过两种途径获取: 第一种是生成模型&#xff0c;然后处理这些模型数据(如由类 vtkCylinderSource 生成的多边形数据); 第二种是从外部存储介质里导…