使用Oracle.ManagedDataAccess替代System.Data.Oracle

某C#项目需要访问Oracle数据,早期开发人员都使用.Net Framework 自带的System.Data.OracleClient进行访问。

但System.Data.OracleClient却存在如下问题:

  • 在.Net Framework 4.0已被标识Obsolete,已弃用;
  • 使用System.Data.OracleClient必须安装Oracle Client(安装包不低于600MB)。

为解决System.Data.OracleClient的问题,博主通过对比不同技术,最终才采用了Oracle.ManagedDataAccess(版本4.121.2.0),原因如下:

  • 不需要其他依赖,直接引用Oracle.ManagedDataAccess.dll即可;
  • 运行时文件不到4M;
  • 新版本支持.Net Core,支持跨平台开发。

如要使用Oracle.ManagedDataAccess看,可直接复制dll文件或完整安卓ODP.NET(点击此处跳转至Oracle ODP.NET

详细使用基本与ADO.NET其他实现一致,常用核心类包括:OracleCommand、OracleConnection、OracleDataAdapter、OracleDataReader、OracleParameter、OracleTransaction。

连接字符串格式为:User Id=admin;Password=pwd;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=moetech)))。

下面为示例代码,访问一个位于192.168.1.1机器上实例名称为moetech的数据库,查询moeTable表全部数据。

OracleConnection conn = new OracleConnection();
conn.ConnectionString = "User Id=admin;Password=pwd;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=moetech)))"
conn.Open();
string sql = " select * from moeTable";
OracleCommand cmd = new OracleCommand(sql, conn);
OracleDataReader dr = cmd.ExecuteReader();

原创文章,转载请注明: 转载自墨意杂记

本文链接地址: 使用Oracle.ManagedDataAccess替代System.Data.Oracle