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(防止抄袭,原文地址不可删除)