备忘录:关于.net程序连接Oracle数据库

 

 

志铭-2021年12月7日 21:22:15

关于使用MSSM访问Oracle数据库



关于. net 程序中连接Oracle数据库

  • 使用Oracle.ManagedDataAccess.Client.dll

    • 该程序集对.net无版本要求
    • nuget:Install-Package Oracle.ManagedDataAccess -Version 19.13.0
    • 注意我没有使用最新21.4.0版本,该最新版本依赖另外一个类库System.Text.Json (>= 5.0.2),而且对.net版本有要求
  • 注意:注意不要使用System.Data.OracleClient,vs会提示过时

  • 关于Oracle数据库连接字符串格式参考:

    <connectionStrings>
    	<add name="connStringForOracle" connectionString="user id=用户ID;password=密码;data source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=服务IP地址)(PORT=端口号))(CONNECT_DATA=(SERVER=服务名)(SERVICE_NAME=服务名)))" />
    </connectionStrings>
    
  • 简易的封装一个Oracle辅助类:

    //添加命名空间:using Oracle.ManagedDataAccess.Client;
    public class OracleHelper
    {
        private static readonly string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["connStringForOracle"].ToString();
    
    
        //创建连接对象
        public static OracleConnection GetConn()
        {
            var conn = new OracleConnection(connectionString);
            conn.Open();
            return conn;
        }
    
        //执行非查询语句返回受影响行数
        public static int ExecuteNoQuery(string sql,CommandType type=CommandType.Text,params SqlParameter[] param)
        {
            using (var conn = GetConn())
            {
                using (OracleCommand cmd=new OracleCommand (sql,conn))
                {
                    if (null!=param)
                    {
                        cmd.Parameters.AddRange(param);
                    }
                    cmd.CommandType = type;
                    conn.Open();
                    return cmd.ExecuteNonQuery();
                }
            }
        }
    
        //返回查询结果的第一行第一个单元格的数据
        public static object ExecuteScalar(string sql,CommandType type=CommandType.Text,params SqlParameter[] param)
        {
            using (var conn = GetConn())
            {
                using (OracleCommand cmd=new OracleCommand(sql,conn))
                {
                    if (null!=param)
                    {
                        cmd.Parameters.AddRange(param);
                    }
                    cmd.CommandType = type;
                    conn.Open();
                    return cmd.ExecuteScalar();
                }
            }
        }
    
        //返回查询结果集
        public static DataSet GetDataSet(string sql, CommandType type = CommandType.Text, params SqlParameter[] param)
        {
            using (var conn = GetConn())
            {
                using (OracleDataAdapter adapter = new OracleDataAdapter(sql, conn))
                {
                    if (null != param)
                    {
                        adapter.SelectCommand.Parameters.AddRange(param);
                    }
                    adapter.SelectCommand.CommandType = type;
                    DataSet ds = new DataSet();
                    adapter.Fill(ds);
                    return ds;
                }
            }
        }
    }
    

 

 

出处:https://www.cnblogs.com/shanzhiming/p/15657204.html

posted on   jack_Meng  阅读(166)  评论(0编辑  收藏  举报

编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
历史上的今天:
2015-12-08 算法:10元可以喝几瓶啤酒?

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

支付宝打赏

主题色彩