C# Dapper 操作Oracle数据库

news2024/9/9 7:28:48

nuget安装内容 

 1.配置连接字符串 OracleConnectionString这个可用

{

  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",

  "DB": {
    "OracleConnStr": "Password=123456;User ID=system;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.20.13)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)));",
    "OracleConnectionString": "data source=192.168.20.13:1521/XE;password=123456;user id=system;Incr Pool Size=5;Decr Pool Size=2;",
    "OracleConnStr1": "Data Source=LINKASIA;User Id=system;Password=123456",
    "MySQLConnStr": "server=127.0.0.1;port=3306;user=root;password=123456; database=spongeglueing;",
    "SqliteDBName": "mydb.db"
  },
  "SerialPort": {
    "Name": "COM!"
  }
}

 2.读取配置文件类


using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;

namespace TireDirection.Helper.Settings
{
    /// <summary>
    /// 读取配置信息
    /// </summary>
    public class AppSettingsHelper
    {
        /// <summary>
        /// 
        /// </summary>
        public static IConfiguration Configuration { get; set; }
        static AppSettingsHelper()
        {
            //ReloadOnChange = true 当appsettings.json被修改时重新加载            
            Configuration = new ConfigurationBuilder()
            .Add(new JsonConfigurationSource { Path = "Config\\appsettings.json", ReloadOnChange = true })
            .Build();
        }
    }
}

3.Dapper数据库操作类 

using Dapper;
using Oracle.ManagedDataAccess.Client;
using TireDirection.Helper.Settings;

namespace TireDirection.Helper.DB
{
    public class DapperOracleHelper
    { 
        public class DapperFactory
        { 
            public static readonly string ConnectionStr = AppSettingsHelper.Configuration["DB:OracleConnectionString"] ?? "";
            public static OracleConnection CrateOracleConnection()
            {
                var connection = new OracleConnection(ConnectionStr);
                connection.Open();
                return connection;
            }
        }

        /// <summary>
        /// 执行SQL返回集合
        /// </summary>
        /// <param name="strSql">sql语句</param>
        /// <returns></returns>
        public static List<T> Query<T>(string strSql)
        {
            using (var conn = DapperFactory.CrateOracleConnection())
            {
                return conn.Query<T>(strSql, null).ToList();
            }
        } 

        public static List<T> QuerySqlString<T>(string sqlStr,object param)
        {
            List<T> result = new List<T>();
            using (var conn = DapperFactory.CrateOracleConnection())
            {
                //string query = "SELECT  *  FROM sys_user t where username=:id ";
                //var par = new { id = "admin" };
                //var par = JsonConvert.DeserializeObject(param);
                result = conn.Query<T>(sqlStr, param).ToList();

                // conn.Insert(new SysUser());
                // conn.Update(new SysUser());//根据主键更新
                // conn.Delete(new SysUser()); //根据主键删除
            }
            return result;
        }
        public static int ExecuteNonQuery(string sql, params SQLiteParameter[] ps)
        {
            int result = -1;
            using (var conn = DapperFactory.CrateOracleConnection())
            {
                string query = "SELECT  *  FROM sys_user t where username=:id ";
                var par = new { id = "admin" };
                result = conn.Execute(query, par);

               // conn.Insert(new SysUser());
               // conn.Update(new SysUser());//根据主键更新
               // conn.Delete(new SysUser()); //根据主键删除
            }
            return result;
        }
    }
}

4.操作数据实例 

            public static List<DBTestModel> Test( )
            {
                List<DBTestModel> result = new List<DBTestModel>();
                string SqlStr = @$"Select ID, Name,Value from LINKASIA ";
                try
                {
                    result = DapperOracleHelper.Query<DBTestModel>(SqlStr);

                    SqlStr = @$"Select ID, Name,Value from LINKASIA where ID=:id";
                    var par =   new { id = "1" };
                    result = DapperOracleHelper.QuerySqlString<DBTestModel>(SqlStr, par);
                }
                catch (Exception ex)
                {
                    Log.Logger.Error($"LinkAsiaDB GetAllSpongeGlueing 异常 {ex.Message}");
                }

                return result;
            }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/948839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多维时序 | Matlab实现GRU-Adaboost和GRU多变量时间序列预测对比

多维时序 | Matlab实现GRU-Adaboost和GRU多变量时间序列预测对比 目录 多维时序 | Matlab实现GRU-Adaboost和GRU多变量时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | Matlab实现GRU-Adaboost和GRU多变量时间序列预测对比 模型描述 M…

基于Googlenet深度学习网络的螺丝瑕疵检测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ....................................................................................% 获…

python爬虫关于ip代理池的获取和随机生成

前言 在进行爬虫开发时&#xff0c;代理IP池是一个非常重要的概念。代理IP池是指一个包含多个可用代理IP的集合&#xff0c;这些代理IP可以用来绕过网站的防爬虫策略&#xff0c;从而提高爬取数据的成功率。 在本文中&#xff0c;我们将介绍如何获取代理IP池&#xff0c;并且随…

统一使用某一个包管理工具,比如yarn pnpm

原因&#xff1a;前端每个人的习性不一样&#xff0c;有人用npm 有人用yarn等包管理工具&#xff0c;混合下载插件容易出bug&#xff0c;就用个小工具锁住就行了&#xff0c;只能使用yarn或者pnpm反向下载依赖和下载插件。不然就报错 1.在项目主目录下创建preinstall.js // 如…

直播预告!生鲜与零售商品识别系统产业实践与部署详解

生鲜零售作为民生消费的重要一环&#xff0c;在促进行业新消费升级的进程中有着至关重要的作用。在超市等无人零售场景中&#xff0c;目前结算方式主要有以下几种&#xff1a; 但是以上几种方法存在如下缺点&#xff1a; 条形码方式&#xff1a;对于成品包装的商品较为成熟&…

MindSponge分子动力学模拟——软件架构(2023.08)

技术背景 在前面一篇文章中&#xff0c;我们介绍了MindSponge的两种不同的安装与使用方法&#xff0c;让大家能够上手使用。这篇文章主要讲解MindSponge的软件架构&#xff0c;并且协同mindscience仓库讲解一下二者的区别。 整体架构 首先我们来了解一下MindSponge独立仓库的软…

day28 异常

to{}catch{} try{}catch{}的流传输 try {fis new FileInputStream("file-APP\\fos.txt");fos new FileOutputStream("fos.txt");int a ;while ((a fis.read())! -1){fos.write(a);}System.out.println(a); } catch (IOException e) {e.printStackTrace()…

ECharts图表动态修改series显示隐藏

文章目录 1、前言2、思路3、实现 1、前言 最近做的大数据平台&#xff0c;里面很多部分用到了ECharts&#xff0c;其中有个功能&#xff0c;要求将图表分组&#xff0c;根据用户选择的组&#xff0c;来确定ECharts要显示那些线条和柱子&#xff0c;也就是动态的显示option.seri…

习题练习 C语言(暑期第三弹)

自我小提升&#xff01; 前言一、存储地址二、逗号表达式三、除自身以外数组的乘积四、字节与二进制五、符号计算六、不用加减乘除做加法七、unsigned判断八、移位计算九、sizeof宏十、移位计算十一、移位计算十二、优先级判断十三、单词倒排总结 前言 重要的事说三遍&#xf…

仓储24代电子标签操作指导

服务器使用 服务器环境需求 数据库&#xff1a;Mysql5.7 Java环境&#xff1a;jdk1.8 软件容器&#xff1a; Tomcat8.5/9.0 软件部署步骤 mysql5.7, 创建db_wms数据库并导入原始数据库文件 安装jdk1.8, 配置java环境变量 下载tomca8.0, 部署wms.war到tomcat, 并启动tomc…

一体化智能可观测平台助力车企数智化转型

8月24日&#xff0c;博睿数据主办的《"车程ONE里&#xff0c;万事大吉" - 可观测性在汽车行业的应用与发展网络分享会》开播&#xff0c;邀请了博睿数据全国汽车行业负责人吴伟硕和博睿数据资深技术专家向涛做客直播间&#xff0c;分享汽车企业数字化转型的故事&…

恒运资本:华为Mate 60 Pro突然发售拉动半导体股,中芯国际等开盘涨超5%

8月30日&#xff0c;受华为突然发售Mate 60 Pro手机影响&#xff0c;A股开盘后半导体板块迅速拉升&#xff0c;伟测科技、美芯晟涨超10%&#xff0c;利扬芯片、唯捷创芯、芯动联科、中芯世界、华虹公司等涨超5%。 恒运资本平台&#xff08;百度搜索恒运资本&#xff09;是深圳…

QT生成可执行文件

有时候为方便在没有QT电脑上执行程序&#xff0c;需要生成可执行文件 1.在计算机任意英文路径下新建一个文件夹。本文在F:\QTproject\hisiupdate下创建了test文件夹。将QT工程运行Release生成的build-update-MinGW-Release文件夹下Release下.exe文件拷贝到新建的test文件夹下。…

【数据结构-链表-01】反转链表

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

基于swing的图书管理系统java书店信息 jsp源代码Mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于swing的图书管理系统 系统有1权限:管理员 二、主…

Ansible学习笔记6

stat模块&#xff1a;获取文件的状态信息&#xff0c;类似Linux的stat状态。 获取/etc/fstab文件的状态。 [rootlocalhost tmp]# ansible group1 -m stat -a "path/etc/fstab" 192.168.17.106 | SUCCESS > {"ansible_facts": {"discovered_inter…

数据通信——传输层TCP(可靠传输原理的ARQ)

引言 上一篇讲述了停止等待协议的工作流程&#xff0c;在最后提到了ARQ自动请求重传机制。接下来&#xff0c;我们就接着上一篇的篇幅&#xff0c;讲一下ARQ这个机制 还是这个图来镇楼 ARQ是什么&#xff1f; 发送端对出错的数据帧进行重传是自动进行的&#xff0c;因而这种…

《Go 语言第一课》课程学习笔记(十三)

方法 认识 Go 方法 Go 语言从设计伊始&#xff0c;就不支持经典的面向对象语法元素&#xff0c;比如类、对象、继承&#xff0c;等等&#xff0c;但 Go 语言仍保留了名为“方法&#xff08;method&#xff09;”的语法元素。当然&#xff0c;Go 语言中的方法和面向对象中的方…

高忆管理:培育钻石价格大跌,力量钻石等多家概念股业绩下滑

8月29日&#xff0c;培养钻石板块直线拉升&#xff0c;其间沃尔德&#xff08;688028.SH&#xff09;涨幅达10.89%&#xff0c;力气钻石(301071.SZ)、惠丰钻石&#xff08;839725.BJ&#xff09;、四方达&#xff08;300179.SZ&#xff09;、黄河旋风&#xff08;600172.SH&…

【STM32】学习笔记(TIM定时器)-江科大

TIM&#xff08;Timer&#xff09;定时器 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能&#xff0c;而且…