目录
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版本的。
下载完成插件,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地址)重新启动服务。