网络编程
位置:首页>> 网络编程>> 数据库>> C#连接Oracle数据库的多种方法总结

C#连接Oracle数据库的多种方法总结

作者:^@^lemon?tea^@^  发布时间:2024-01-23 12:43:45 

标签:c#,连接,oracle数据库

C# 连接oracle数据库常用的三种方法有三种:

一、Oracle.ManagedDataAccess.dll:Oracle官方提供的oracle数据库访问组件,不存在其他依赖dll库,推荐该方法最为重要的是:不需要安装oracle客户端,也不区分x86位和x64位直接就能用,连上其他电脑或者服务端oracle数据库。

二、Oracle.DataAccess.Client.dll:也叫ODP.net,是Oracle提供的数据库访问dll库。好处是:不需要安装客户端也能访问服务器上的oracle,不需要配置tnsNames.Ora文件,但是区分x86位和x64,也比较麻烦。

三、System.Data.OracleClient.dll:是微软提供的dll,可以直接引用,但是VS会提示相关方法已过时,这个提示表明微软建议不使用。该方法需要安装客户端才可以用,并且也是区分区分x86位和x64,容易出现兼容问题。

综上所述介绍,我这里推荐第一种方法,下面就以方法一为实例讲解Oracle数据库连接和获取数据。

**************************************************************************************************************   

Oracle.ManagedDataAccess.Client.dll

环境要求  >= .NET Framework4.0;

编译器使用的是VS2019,在项目中添加Oracle.ManagedDataAccess.Client.dll文件,方法步骤如下:工具 ---- NuGet包管理器  ---- 管理解决方案NuGet程序包 ---- 浏览面板 ---- 在搜索栏中输入Oracle.ManagedDataAccess.Client ---- 搜索 ---- 在显示库文件中选择插件下载即可,搜索显示结果图下图所示。我这里由于项目.NET 的要求,下载的版本是19.xx.xx版本的。

C#连接Oracle数据库的多种方法总结

下载完成插件,VS会自动安装,然后把库添加至引用。

**************************************************************************************************************      数据库连接实现,首先添加using Oracle.ManagedDataAccess.Client;命名空间,这里就简单的实现数据库连接和获取数据,具体代码如下:

//DataTableName:视图/表名称;checkNum:查询条件
public DataTable GetOracleData(string DataTableName, string checkNum)
{
try
{
string SqlConnStr = "Password=*****;User ID=sys;Connection Lifetime=15;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=102.16.1.113)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));";
OracleConnection conn = new OracleConnection(SqlConnStr);
string sqlStr = string.Format(@"SELECT * from ""{0}""  WHERE ""CheckupCode""='{1}'", DataTableName, checkNum);
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = sqlStr;
cmd.CommandType = CommandType.Text;
OracleDataReader dReader = cmd.ExecuteReader();
string dataStr = string.Empty;
DataRow dataRow;
DataTable oracleDataTb = new DataTable();
//设置Table名和Column名
oracleDataTb.TableName = "AerospaceCenterHis";
for (int j = 0; j < dReader.FieldCount; j++)
{
oracleDataTb.Columns.Add(dReader.GetName(j));//获取列名
}
//循环取数据集合中的数据,存到DataTable中
do
{
while (dReader.Read())
{
dataRow = oracleDataTb.NewRow();
for (int j = 0; j < dReader.FieldCount; j++)
{
dataStr = dReader[j].ToString();
dataRow[j] = dataStr;
}
oracleDataTb.Rows.Add(dataRow);
}
} while (dReader.NextResult());

return oracleDataTb;
}
catch (Exception ex)
{

}
}

************************************************************************************************************** 

这里要注意的是:连接到服务端上的Oracle数据库时,需要把配置文件修改了,使其能够进行局域网或者远程的访问,还要把端口开放。

在Oracle数据库安装路径,当然每台安装oracle数据库的地址都是不同的(例如:C:\Oracle11g\product\11.2.0\dbhome_1\network\admin\listener.ora   tnsnames.ora)中找到文件listener.ora和tnsnames.ora文件,把两个文件中HOST = localhost配置改成HOST=192.186.11.1(服务器IP地址)重新启动服务。

************************************************************************************************************** 

来源:https://blog.csdn.net/BYH371256/article/details/126378039

0
投稿

猜你喜欢

  • 第一个保存在新建一个文本中<% Dim Username,PassWord,strLogFile,f,ff,Str
  • 今天看了一下数据结构的书,发现其实数据结构没有几种,线性表,数组,字符串,队列和栈,等等,其实是一回事,然后就是树结构,图结构。数据结构的理
  • 1.plt.pie()饼图 常常用来显示 整体中各部分所占的比例,在python-matplotlib库中通过plt.pie()方法来实现。
  • 我就废话不多说了,直接上代码吧!from os import listdirimport osfrom time import timeim
  • 概述本文主要介绍一种降维方法,PCA(Principal Component Analysis,主成分分析)。降维致力于解决三类问题。1.
  • 一、块(Block)是PL/SQL的基本执行单元,由定义部分,执行部分(必须)和例外处理部分组成。Declare/*定义部分――定义常量、变
  • 本文研究的主要是pyqt5自定义信号实例解析的相关内容,具体介绍如下。PyQt5已经自动定义了很多QT内建的信号。但是在实际的使用中为了灵活
  • 故障转移群集是Windows Server中的一个功能,自从在Windows NT 4.0 Enterprise Edition中首次引入群
  • 目录前言redo log的产生redo log 的提交redo log 的落盘及通知通知用户线程总结前言最开始
  • 【eval()函数】 JavaScript有许多小窍门来使编程更加容易。 其中之一就是eval()函数,这个函数可以把一个字符串当作一个Ja
  • 首先我们知道这个效果应该是一个老话题了。今天整理文件的时候,发现自己以前的一些布局的解决方法躺在文件夹里很长时间了,翻翻老底吧。需要说明的是
  • Pytorch:Conv2d卷积前后尺寸Conv2d参数尺寸变化卷积前的尺寸为(N,C,W,H) ,卷积后尺寸为(N,F,W_n,H_n)W
  • 一个MDB数据库就是硬盘上的另外一个文件,所以,像其他文件一样,它也将遇到相同的文件访问许可问题。这个问题的意思是为了读取(和写入,就像您将
  • 在ASP的实际操作中,总会发生这样的情况,如在银行,从我的帐户往费文华的帐户划款,我的帐户显示已经划出,但因银行的系统出现故障,导致费文华帐
  • 题目:请求出任意区间[a,b]的所有素数,简单考虑实用性这道题看起来应该很easy是吧,但任意区间(这个问题有没get 到)Afanty的分
  • 前言在mysql中slow query log是一个非常重要的功能,我们可以开启mysql的slow query log功能,这样就可以分析
  • python编写计算器,供大家参考,具体内容如下(1)计算器界面如下:(2)基本满足了计算器的所有需求,使用时不可键盘输入,只能鼠标点击左键
  • 前言前面我们已经安装好了Docker,也简单了解了Docker。下面就来给大家介绍下Docker创建Mysql容器的简单步骤,话不多说了,来
  • 什么是memcached:memcached之前是danga的一个项目,最早是为LiveJournal服务的,当初设计师为了加速LiveJo
  • 如何用HtmlEncode来显示Unicode?    见下:<%@ Language=VBS
手机版 网络编程 asp之家 www.aspxhome.com