Oracle - C#连接数据库
一.System.Data.OracleClient 微软提供的连接库,不过已经过时,不建议使用
二.Oracle.DataAccess.Client (ODP.Net) Oracle提供的数据库访问类库.
三.Oracle.ManagedDataAccess.dll (ODP.NET Managed) 也是Oracle提供的。
推荐使用方案3,但是使用ManagedDataAccess的话,必须添加对程序集“netstandard”的引用,而这个程序集又是FrameWork 4.6及以上才有的,
所以笔者这用的.net框架FrameWork 4.5的项目并不能使用, 采用方案二来处理,方案二是需要区分x86/x64版本的.
1.去官网下载需要的dll文件。
http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html
下载对应的vs版本的dll文件,如果vs版本太低,就下载最老的dll文件,笔者下载的最老的: ODAC 11.2 Release 5
在下载的ODTwithODAC1120320_32bit文件夹下找到所需的dll文件(jar压缩包用解压工具解压):
文件 | 路径 | 备注 |
oci.dll | ~\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup2.jar | 原文件叫oci.dll.dbl,把后面的扩展名去掉 |
ociw32.dll | ~\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup2.jar | 原文件叫ociw32.dll.dbl,把后面的扩展名去掉 |
Oracle.DataAccess.dll | ~\stage\Components\oracle.ntoledb.odp_net_2\11.2.0.3.0\1\DataFiles\filegroup2.jar | |
orannzsbb11.dll | ~\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup1.jar | |
oraocci11.dll | ~\stage\Components\oracle.rdbms.rsf.ic\11.2.0.3.0\1\DataFiles\filegroup3.jar | |
oraociei11.dll | ~\stage\Components\oracle.rdbms.ic\11.2.0.3.0\1\DataFiles\filegroup3.jar | |
oraociicus11.dll | ~\stage\Components\oracle.rdbms.ic\11.2.0.3.0\1\DataFiles\filegroup4.jar | |
OraOps11w.dll | ~\stage\Components\oracle.ntoledb.odp_net_2\11.2.0.3.0\1\DataFiles\filegroup16.jar |
将这些dll文件放到项目运行的bin目录下,和运行文件同一目录。
文件不齐全,引发错误:The provider is not compatible with the version of Oracle client
缺少oraociei11.dll ,引发错误:ORA-12737: Instant Client Light: unsupported server character set %s
项目中添加Oracle.DataAccess.dll的引用
数据库连接语句:
<connectionStrings> <add name="OracleConnString" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.161)(PORT=1521))(CONNECT_DATA=(SID=MyOracle)));Persist Security Info=True;User ID=system;Password=Sky312;"/> </connectionStrings>
C#调用:using Oracle.DataAccess.Client;
private readonly string connstr = ConfigurationManager.ConnectionStrings["OracleConnString"].ConnectionString; string sql = "SELECT * FROM \"UserInfo\" "; OracleConnection connection = new OracleConnection(connstr); connection.Open(); OracleCommand command = new OracleCommand(sql, connection); DataTable table = null; try { OracleDataAdapter adapter = new OracleDataAdapter(); adapter.SelectCommand = command; table = new DataTable(); adapter.Fill(table); } catch { throw; } finally { command.Dispose(); connection.Close(); connection.Dispose(); }
dataGridView1.DataSource = table;
查询
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律