C#怎么连接Oracle数据库 C#如何用OracleConnection操作Oracle进行数据读写【数据库】

张开发
2026/4/15 18:47:14 15 分钟阅读

分享文章

C#怎么连接Oracle数据库 C#如何用OracleConnection操作Oracle进行数据读写【数据库】
现在唯一推荐的驱动是Oracle.ManagedDataAccess它纯托管、跨平台、无需安装Oracle客户端System.Data.OracleClient早已过时且不支持.NET Core/5。Oracle.ManagedDataAccess 是现在唯一推荐的驱动用 System.Data.OracleClient别试了它早在 .NET Framework 4.0 就被标记为过时.NET Core / .NET 5 完全不支持。现在唯一靠谱、官方维护、跨平台Windows/macOS/Linux的选择是 Oracle.ManagedDataAccess —— 纯托管实现不用装 Oracle 客户端也不依赖 ORACLE_HOME。安装方式很简单dotnet add package Oracle.ManagedDataAccess。如果是旧项目还在用 System.Data.OracleClient直接删引用、换 NuGet 包、改命名空间using Oracle.ManagedDataAccess.Client;否则运行时必报 TypeLoadException 或 Could not load file or assembly。连接字符串里最容易写错的三个地方Oracle 连接字符串格式比 SQL Server 更敏感稍有空格或大小写不对就抛 OracleException: ORA-12154: TNS could not resolve the connect identifier。Data Source 不要硬写 (DESCRIPTION...) 长串——除非你真需要定制网络参数优先用 Easy Connect 格式Data Sourcelocalhost:1521/XEXE 是服务名不是 SID服务名Service Name和 SID 不一样12c 默认用服务名查数据库用 SELECT value FROM v$parameter WHERE name service_names;别凭印象填 ORCL用户名密码区分大小写且默认 Oracle 12c 账户是大写如 SYSTEM如果用小写登录会提示 ORA-01017: invalid username/password哪怕密码对用 OracleConnection OracleCommand 读写必须配对使用 usingOracle 的连接资源释放比 SQL Server 更“娇气”不显式释放容易快速耗尽连接池尤其在 Web 应用里表现为后续连接卡住、超时、或报 ORA-12519: no appropriate service handler。正确姿势是每个 OracleConnection 和 OracleCommand 都套 usingusing (var conn new OracleConnection(connStr)){ conn.Open(); using (var cmd conn.CreateCommand()) { cmd.CommandText SELECT COUNT(*) FROM users WHERE status :p1; cmd.Parameters.Add(new OracleParameter(p1, active)); var count (int)cmd.ExecuteScalar(); }}注意OracleParameter 的名字带冒号:p1是合法的但实际传参时 Add 方法里不要带冒号——写成 p1否则会报 ORA-01036: illegal variable name/number。 RedClaw 百度推出的手机端万能AI Agent助手

更多文章