C# 连接 Oracle 数据库
目录
本文使用的环境
Windows10、VS2019、Oracle 11g
Oracle.DataAccess.dll 在哪
一般默认在 Oracle 的安装路径下,我的路径在这个文件夹内部【C:\Oracle\product\11.2.0\client_1\ODP.NET\bin\2.x】
使用 C# 自带的 Oracle.DataAccess.dll 即可实现基础的 Oracle 数据库连接,具体方法如下
创建新项目
选择【控制台应用 → 下一步】
【命名 → 选择代码路径 → 选择框架版本 → 下一步】
【右击项目 → 添加 → 新建项】
【选择 → 类 → 命名 → 添加】
【右击引用 → 添加引用】
【浏览 → 浏览】
【选择 dll 文件 → 添加 → 确定】
进入 【OracleHelper.cs → 粘贴代码】
TNS在哪参见:TNS 存储路径
using Oracle.DataAccess.Client; using System.Data; namespace connectOracle { class OracleHelper { // Data Source 直接拷贝 TNS 里面的内容,去掉 "XXX.XXX.COM.CN =" 注意区分正式与测试环境 private static string connStr = "User Id=xxxx;Password=xxxx;" + "Data Source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.65.1.xx)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = xxxx)))"; #region 执行SQL语句,返回受影响行数 public static int ExecuteNonQuery(string sql, params OracleParameter[] parameters) { using (OracleConnection conn = new OracleConnection(connStr)) { conn.Open(); using (OracleCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(parameters); int i = cmd.ExecuteNonQuery(); conn.Close(); return i; } } } #endregion #region 执行SQL语句,返回DataTable;只用来执行查询结果比较少的情况 public static DataTable ExecuteDataTable(string sql, params OracleParameter[] parameters) { using (OracleConnection conn = new OracleConnection(connStr)) { conn.Open(); using (OracleCommand cmd = conn.CreateCommand()) { cmd.CommandText = sql; cmd.Parameters.AddRange(parameters); OracleDataAdapter adapter = new OracleDataAdapter(cmd); DataTable datatable = new DataTable(); adapter.Fill(datatable); conn.Close(); return datatable; } } } #endregion } }
进入 【Program.cs → 粘贴测试代码】
using Oracle.DataAccess.Client; using System; using System.Data; namespace connectOracle { class Program { static void Main(string[] args) { string sSql; DataTable dt = new DataTable(); // sql 语句 sSql = " select a.*, a.rowid from students a where a.name = 'xxx' "; // sql 赋值 无参数传入 sql OracleParameter[] paramATIO = new OracleParameter[] { }; // sql 语句 // sSql = " select * from students where name = :name and age = :age"; // string name = "张三"; // int age = 16; // 有参数传入 sql // OracleParameter[] paramATIO = new OracleParameter[] { // new OracleParameter(":name",name ), // new OracleParameter(":age",age + "") // }; // 执行sql dt = OracleHelper.ExecuteDataTable(sSql, paramATIO); if (dt.Rows.Count > 0) { Console.WriteLine("该 sql 执行结果共计" + dt.Rows.Count + " 行"); Console.ReadKey(); } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~