C#使用Oracle.ManagedDataAccess.dll

1、添加引用

在网上下载一个Oracle.ManagedDataAccess.dll,引用即可,操作不受操作系统的位数限制,服务器也不Oracle客户端;

2、web.config字串

    <appSettings>
    <add key="hrp" value="Data Source= (DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.100.153)(PORT = 1521)))(CONNECT_DATA = (SERVICE_NAME = orcl)));User ID=jdkq2012to2017;Password=1;Min Pool Size=0;Max Pool Size=10;Connection Timeout=600;Incr Pool Size=5;Decr Pool Size=2;" />
    </appSettings>

3、程序中添加

using Oracle.ManagedDataAccess.Client;

4、使用如下类

using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;


    /// <summary>
    /// Oracle数据库操作类
    /// </summary>
public static class OracleHelper
{

    public static string connstr = System.Configuration.ConfigurationManager.AppSettings["hrp"];
    public static string connectionZCString = System.Configuration.ConfigurationManager.AppSettings["zc"].ToString();
    //public static string connectionRJSSString = System.Configuration.ConfigurationManager.AppSettings["HIS3"].ToString();

    public static OracleConnection connF(string connectionString)
    {
        switch (connectionString)
        {
            //case "HIS4":
            //    connectionString = connectionHIS4String;
            //    break;
            case "zc":
                connectionString = connectionZCString;
                break;
            default:
                connectionString = connstr;
                break;
        }

        OracleConnection connection = new OracleConnection(connectionString);
        return connection;
    }

    /// <summary>  
    /// 执行数据库非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        using (OracleConnection conn = connF(connectionString))
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }
    }
    /// <summary>  
    /// 执行数据库非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(string connectionString, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        using (OracleConnection conn = connF(connectionString))
        {
            PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }
    }
    /// <summary>  
    /// 执行数据库非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <returns>当前操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(string connectionString, string cmdText)
    {
        OracleCommand cmd = new OracleCommand();
        using (OracleConnection conn = connF(connectionString))
        {
            PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, (OracleParameter[])null);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }
    }

    public static int ExecuteNonQuery(string cmdText)
    {
        OracleCommand cmd = new OracleCommand();
        using (OracleConnection conn = connF(""))
        {
            PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, (OracleParameter[])null);
            int val = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            return val;
        }
    }


    /// <summary>  
    /// 执行数据库事务非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="transaction">数据库事务对象</param>  
    /// <param name="cmdType">Command类型</param>  
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前事务操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(OracleTransaction trans, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
        int val = cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        return val;
    }
    /// <summary>  
    /// 执行数据库事务非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="transaction">数据库事务对象</param>  
    /// <param name="cmdType">Command类型</param>  
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前事务操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(OracleTransaction trans, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        PrepareCommand(cmd, trans.Connection, trans, CommandType.Text, cmdText, cmdParms);
        int val = cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        return val;
    }
    /// <summary>  
    /// 执行数据库事务非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="transaction">数据库事务对象</param>  
    /// <param name="cmdType">Command类型</param>  
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前事务操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(OracleTransaction trans, string cmdText)
    {
        OracleCommand cmd = new OracleCommand();
        PrepareCommand(cmd, trans.Connection, trans, CommandType.Text, cmdText, (OracleParameter[])null);


        int val = cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        return val;
    }

    public static bool ExecuteTransactionBySqls(List<string> sqlArray)
    {
        bool isSuccess = false;
        using (OracleConnection conn = connF(""))
        {
            try
            {
                conn.Open();
                OracleTransaction transaction = conn.BeginTransaction();
                foreach (var itemSql in sqlArray)
                {
                    using (OracleCommand cmd = new OracleCommand())
                    {
                        cmd.Connection = conn;
                        cmd.CommandText = itemSql.ToString();
                        cmd.Transaction = transaction;
                        cmd.ExecuteNonQuery();
                    }
                }
                transaction.Commit();
                conn.Close();
                isSuccess = true;

            }
            catch
            {
                conn.Close();
            }
        }
        return isSuccess;
    }

    /// <summary>  
    /// 执行数据库非查询操作,返回受影响的行数  
    /// </summary>  
    /// <param name="connection">Oracle数据库连接对象</param>  
    /// <param name="cmdType">Command类型</param>  
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前操作影响的数据行数</returns>  
    public static int ExecuteNonQuery(OracleConnection connection, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        if (connection == null)
            throw new ArgumentNullException("当前数据库连接不存在");
        OracleCommand cmd = new OracleCommand();
        PrepareCommand(cmd, connection, null, cmdType, cmdText, cmdParms);
        int val = cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        return val;
    }

    /// <summary>  
    /// 执行数据库查询操作,返回OracleDataReader类型的内存结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的OracleDataReader类型的内存结果集</returns>  
    public static OracleDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        OracleConnection conn = connF(connectionString);
        try
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            OracleDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            cmd.Parameters.Clear();
            return reader;
        }
        catch
        {
            cmd.Dispose();
            conn.Close();
            throw;
        }
    }
    /// <summary>  
    /// 执行数据库查询操作,返回DataSet类型的结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的DataSet类型的结果集</returns>  
    public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        OracleConnection conn = connF(connectionString);
        DataSet ds = null;
        try
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            OracleDataAdapter adapter = new OracleDataAdapter();
            adapter.SelectCommand = cmd;
            ds = new DataSet();
            adapter.Fill(ds);
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return ds;
    }

    /// <summary>  
    /// 执行数据库查询操作,返回DataSet类型的结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <returns>当前查询操作返回的DataSet类型的结果集</returns>  
    public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText)
    {
        return ExecuteDataSet(connectionString, cmdType, cmdText, (OracleParameter[])null);
    }
    /// <summary>  
    /// 执行数据库查询操作,返回DataSet类型的结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <returns>当前查询操作返回的DataSet类型的结果集</returns>  
    public static DataSet ExecuteDataSet(string connectionString, string cmdText)
    {
        return ExecuteDataSet(connectionString, CommandType.Text, cmdText, (OracleParameter[])null);
    }

    /// <summary>  
    /// 执行数据库查询操作,返回DataTable类型的结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的DataTable类型的结果集</returns>  
    public static DataTable ExecuteDataTable(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        OracleConnection conn = connF(connectionString);
        DataTable dt = null;

        try
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            OracleDataAdapter adapter = new OracleDataAdapter();
            adapter.SelectCommand = cmd;
            dt = new DataTable();
            adapter.Fill(dt);
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return dt;
    }
    /// <summary>  
    /// 执行数据库查询操作,返回DataTable类型的结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的DataTable类型的结果集</returns>  
    public static DataTable ExecuteDataTable(string connectionString, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        OracleConnection conn = connF(connectionString);
        DataTable dt = null;

        try
        {
            PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
            OracleDataAdapter adapter = new OracleDataAdapter();
            adapter.SelectCommand = cmd;
            dt = new DataTable();
            adapter.Fill(dt);
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return dt;
    }
    /// <summary>  
    /// 执行数据库查询操作,返回DataTable类型的结果集  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的DataTable类型的结果集</returns>  
    public static DataTable ExecuteDataTable(string connectionString, string cmdText)
    {
        OracleCommand cmd = new OracleCommand();
        OracleConnection conn = connF(connectionString);
        DataTable dt = null;
        try
        {
            PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, (OracleParameter[])null);
            OracleDataAdapter adapter = new OracleDataAdapter();
            adapter.SelectCommand = cmd;
            dt = new DataTable();
            adapter.Fill(dt);
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return dt;
    }
    /// <summary>  
    /// 执行数据库查询操作,返回结果集中位于第一行第一列的Object类型的值  
    /// </summary>  
    /// <param name="connectionString">数据库连接字符串</param>
    /// <param name="cmdType">命令的类型</param>
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的结果集中位于第一行第一列的Object类型的值</returns>  
    public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        OracleCommand cmd = new OracleCommand();
        OracleConnection conn = connF(connectionString);
        object result = null;
        try
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            result = cmd.ExecuteScalar();
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return result;
    }

    /// <summary>  
    /// 执行数据库事务查询操作,返回结果集中位于第一行第一列的Object类型的值  
    /// </summary>  
    /// <param name="trans">一个已存在的数据库事务对象</param>  
    /// <param name="commandType">命令类型</param>  
    /// <param name="commandText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前事务查询操作返回的结果集中位于第一行第一列的Object类型的值</returns>  
    public static object ExecuteScalar(OracleTransaction trans, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        if (trans == null)
            throw new ArgumentNullException("当前数据库事务不存在");
        OracleConnection conn = trans.Connection;
        if (conn == null)
            throw new ArgumentException("当前事务所在的数据库连接不存在");

        OracleCommand cmd = new OracleCommand();
        object result = null;

        try
        {
            PrepareCommand(cmd, conn, trans, cmdType, cmdText, cmdParms);
            result = cmd.ExecuteScalar();
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            trans.Dispose();
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return result;
    }

    /// <summary>  
    /// 执行数据库查询操作,返回结果集中位于第一行第一列的Object类型的值  
    /// </summary>  
    /// <param name="conn">数据库连接对象</param>  
    /// <param name="cmdType">Command类型</param>  
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    /// <returns>当前查询操作返回的结果集中位于第一行第一列的Object类型的值</returns>  
    public static object ExecuteScalar(OracleConnection conn, CommandType cmdType, string cmdText, params OracleParameter[] cmdParms)
    {
        if (conn == null) throw new ArgumentException("当前数据库连接不存在");
        OracleCommand cmd = new OracleCommand();
        object result = null;

        try
        {
            PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
            result = cmd.ExecuteScalar();
            cmd.Parameters.Clear();
        }
        catch
        {
            throw;
        }
        finally
        {
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
        }

        return result;
    }

    /// <summary>  
    /// 执行数据库命令前的准备工作  
    /// </summary>  
    /// <param name="cmd">Command对象</param>  
    /// <param name="conn">数据库连接对象</param>  
    /// <param name="trans">事务对象</param>  
    /// <param name="cmdType">Command类型</param>  
    /// <param name="cmdText">Oracle存储过程名称或PL/SQL命令</param>  
    /// <param name="cmdParms">命令参数集合</param>  
    private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, CommandType cmdType, string cmdText, OracleParameter[] cmdParms)
    {
        if (conn.State != ConnectionState.Open)
            conn.Open();

        cmd.Connection = conn;
        cmd.CommandText = cmdText;

        if (trans != null)
            cmd.Transaction = trans;

        cmd.CommandType = cmdType;

        if (cmdParms != null)
        {
            foreach (OracleParameter parm in cmdParms)
                cmd.Parameters.Add(parm);
        }
    }

    /// <summary>  
    /// 将.NET日期时间类型转化为Oracle兼容的日期时间格式字符串  
    /// </summary>  
    /// <param name="date">.NET日期时间类型对象</param>  
    /// <returns>Oracle兼容的日期时间格式字符串(如该字符串:TO_DATE('2007-12-1','YYYY-MM-DD'))</returns>  
    public static string GetOracleDateFormat(DateTime date)
    {
        return "TO_DATE('" + date.ToString("yyyy-M-dd") + "','YYYY-MM-DD')";
    }

    /// <summary>  
    /// 将.NET日期时间类型转化为Oracle兼容的日期格式字符串  
    /// </summary>  
    /// <param name="date">.NET日期时间类型对象</param>  
    /// <param name="format">Oracle日期时间类型格式化限定符</param>  
    /// <returns>Oracle兼容的日期时间格式字符串(如该字符串:TO_DATE('2007-12-1','YYYY-MM-DD'))</returns>  
    public static string GetOracleDateFormat(DateTime date, string format)
    {
        if (format == null || format.Trim() == "") format = "YYYY-MM-DD";
        return "TO_DATE('" + date.ToString("yyyy-M-dd") + "','" + format + "')";
    }

    /// <summary>  
    /// 将指定的关键字处理为模糊查询时的合法参数值  
    /// </summary>  
    /// <param name="source">待处理的查询关键字</param>  
    /// <returns>过滤后的查询关键字</returns>  
    public static string HandleLikeKey(string source)
    {
        if (source == null || source.Trim() == "") return null;

        source = source.Replace("[", "[]]");
        source = source.Replace("_", "[_]");
        source = source.Replace("%", "[%]");

        return ("%" + source + "%");
    }
    /// <summary>
    /// 执行存储过程
    /// </summary>
    /// <param name="connection">SqlServer数据库连接对象</param>  
    /// <param name="storedProcName">存储过程名</param>
    /// <param name="parameters">存储过程参数</param>
    /// <returns>SqlDataReader对象</returns>
    public static OracleDataReader RunStoredProcedure(OracleConnection connection, string storedProcName, IDataParameter[] parameters)
    {
        OracleDataReader returnReader = null;
        connection.Open();
        OracleCommand command = BuildSqlCommand(connection, storedProcName, parameters);
        returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);
        return returnReader;
    }
    /// <summary>
    /// 执行存储过程
    /// </summary>
    /// <param name="connection">SqlServer数据库连接对象</param>  
    /// <param name="storedProcName">存储过程名</param>
    /// <param name="parameters">存储过程参数</param>
    /// <returns>SqlDataReader对象</returns>
    public static OracleDataReader RunStoredProcedure(string connectionString, string storedProcName, IDataParameter[] parameters)
    {
        OracleDataReader returnReader = null;
        OracleConnection conn = connF(connectionString);
        conn.Open();
        OracleCommand command = BuildSqlCommand(conn, storedProcName, parameters);
        returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);
        return returnReader;
    }

    /// <summary>
    /// 构建SqlCommand对象
    /// </summary>
    /// <param name="connection">数据库连接</param>
    /// <param name="storedProcName">存储过程名</param>
    /// <param name="parameters">存储过程参数</param>
    /// <returns>SqlCommand</returns>
    private static OracleCommand BuildSqlCommand(OracleConnection connection, string storedProcName, IDataParameter[] parameters)
    {
        OracleCommand command = new OracleCommand(storedProcName, connection);
        command.CommandType = CommandType.StoredProcedure;
        foreach (OracleParameter parameter in parameters)
        {
            command.Parameters.Add(parameter);
        }
        return command;
    }
}

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

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

相关文章

ElasticSearch基本使用

概述 安装 关于ES的安装不做重点讲解&#xff0c;这里提供一个k8s基于sts创建以及ingress访问的模板文件。 --- apiVersion: apps/v1 kind: StatefulSet metadata:labels:app: elasticsearchcomponent: masterrelease: elasticsearchname: elasticsearch-masternamespace: es s…

HTML5 简介

一、 HTML5简介&#xff1a; HTML5 是 W3C 与 WHATWG 合作的结果,WHATWG 指 Web Hypertext Application Technology Working Group。WHATWG 致力于 web 表单和应用程序&#xff0c;而 W3C 专注于 XHTML 2.0。HTML5 中的新特性&#xff1a; ◆ 用于绘画的 canvas 元素; ◆ 用…

「Verilog学习笔记」移位运算与乘法

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 1、在硬件中进行乘除法运算是比较消耗资源的一种方法&#xff0c;想要在不影响延迟并尽量减少资源消耗&#xff0c;必须从硬件的特点上进行设计。根据寄存器的原理&a…

VBA将字典按照item的值大小排序key

方法&#xff1a;利用数组交换位置 sub 字典排序() s 0 Dim arr(dic1.keys)将字典key和value存入一个数组中 For Each ke In dic1.keysarr(s) Array(ke, dic1(ke))s s 1 Next进行排序 For i LBound(arr) To UBound(arr) - 1For j i 1 To UBound(arr)If arr(i)(1) >…

【STM32G431RBTx】备战蓝桥杯嵌入式汇总

文章目录 前言1.省赛模块总结 前言 蓝桥杯嵌入式要准备的模块还是有些数目的&#xff0c;做个目录方便查询 1.省赛模块 【STM32G431RBTx】备战蓝桥杯嵌入式→基本模块→LED 【STM32G431RBTx】备战蓝桥杯嵌入式→基本模块→LCD 【STM32G431RBTx】备战蓝桥杯嵌入式→基本模块→…

C语言之动态内存管理实现通讯录(完整版)

我们在之前的博客中写过静态版的通讯录&#xff0c;我们今天来写一个动态版的&#xff0c;不需要规定它到底需要多大空间&#xff0c;只要还有内存&#xff0c;我们都可以存放的下&#xff01;同时&#xff0c;函数实现原理&#xff0c;我在通讯录静态版的博客里做了详细的讲解…

Electron[2] Electron使用准备

1 背景 介绍一个技术栈的入门基础&#xff0c;往往要以该技术栈的入门案例作为开始比较合适&#xff0c;更能诱惑到刚需的粉丝&#xff0c;深度的学习。Electron的入门也不例外。在入门案例的讲解过程中&#xff0c;我们会学习到Electron引入需要的准备工作有哪些。 2 入门案例…

量化、蒸馏、分解、剪枝

量化、蒸馏、分解和剪枝都是用于深度学习模型压缩和优化的算法。 量化是一种用于减少深度学习模型计算量和内存消耗的技术。在深度学习中&#xff0c;模型通常使用高精度的浮点数表示参数和激活值&#xff0c;但这种表示方式会占用大量的内存和计算资源。而量化技术通过降低参数…

操作系统学习笔记(学习中)

计算机系统概述 1.操作系统概念 管理系统软/硬件资源&#xff0c;为程序提供服务 2.发展与分类 3.操作系统的运行环境 运行机制 指令&#xff1a;&#xff08;二进制机器指令&#xff09;&#xff0c;CPU能识别&#xff0c;执行的最基本命令 应用程序&#xff1a;程序员写…

Splunk 创建特色 dashboard 报表

1: 背景: 对原有的dashboard 进行增加点东西,特别是文字部分: 比如: 增加:“this is a guidline for how to use performance". 这段话,就不能写在title, 那样,这段文字,会出现在dashboard 的PDF 文件的分割线的上面,不符合要求。 2: 解决问题: 正确的做法是…

Why delete[] array when deepcopying with “=“?

代码负责释放对象之前已经分配的资源&#xff0c;比如堆上的内存。在执行深拷贝之前&#xff0c;你需要确保对象不再引用之前的资源&#xff0c;以避免内存泄漏。通过删除先前的资源&#xff0c;你可以确保在进行深拷贝之前&#xff0c;已经释放了之前的资源&#xff0c;从而避…

Qt学习:图形视图框架的使用

文章目录 前言一、场景、视图和图形项的介绍二、图形视图框架的坐标系统三、图形视图框架的事件处理四、示例完整代码五、QtCreator官方示例总结 前言 近期重温了一下Qt中的图形视图框架&#xff0c;这里将所学习的内容进行记录总结。这个框架提供了一个基于图形项的模型视图编…

Java配置47-Spring Eureka 未授权访问漏洞修复

文章目录 1. 背景2. 方法2.1 Eureka Server 添加安全组件2.2 Eureka Server 添加参数2.3 重启 Eureka Server2.4 Eureka Server 升级版本2.5 Eureka Client 配置2.6 Eureka Server 添加代码2.7 其他问题 1. 背景 项目组使用的 Spring Boot 比较老&#xff0c;是 1.5.4.RELEASE…

Linux生成静态库

GCC 什么是GCC GCC 是 GNU 编译器集合&#xff08;GNU Compiler Collection&#xff09;的缩写。它是一个开源的编程语言编译器&#xff0c;支持多种编程语言&#xff0c;包括 C、C、Objective-C、Fortran、Ada 和 Go 等。GCC 最初由理查德斯托曼&#xff08;Richard Stallman…

2022最新版-李宏毅机器学习深度学习课程-P32 Transformer

一、 seq2seq 1. 含义 输入一个序列&#xff0c;机器输出另一个序列&#xff0c;输出序列长度由机器决定。 文本翻译&#xff1a;文本至文本&#xff1b;  语音识别&#xff1a;语音至文本&#xff1b;  语音合成&#xff1a;文本至语音&#xff1b;  聊天机器人&#…

WPF布局控件之DockPanel布局

前言&#xff1a;博主文章仅用于学习、研究和交流目的&#xff0c;不足和错误之处在所难免&#xff0c;希望大家能够批评指出&#xff0c;博主核实后马上更改。 概述&#xff1a; DockPanel 位置子控件基于子 Dock 属性&#xff0c;你有 4 个选项停靠&#xff0c;左 (默认) &…

HarmonyOS 数据管理与应用数据持久化(二)

通过键值型数据库实现数据持久化 场景介绍 键值型数据库存储键值对形式的数据&#xff0c;当需要存储的数据没有复杂的关系模型&#xff0c;比如存储商品名称及对应价格、员工工号及今日是否已出勤等&#xff0c;由于数据复杂度低&#xff0c;更容易兼容不同数据库版本和设备…

Gradle笔记 一 Gradle的安装与入门

文章目录 Gradle 入门Gradle 简介学习Gradle 的原因&#xff1a; 常见的项目构建工具Gradle 安装Gradle 安装说明安装JDK 下载并解压到指定目录配置环境变量检测是否安装成功 Gradle 项目目录结构Gradle 创建第一个项目Gradle 中的常用指令修改maven 下载源Wrapper 包装器使用教…

项目管理之如何估算项目工作成本

在项目管理中&#xff0c;如何估算项目工作成本是一个关键问题。为了解决这个问题&#xff0c;我们可以采用自上而下的成本限额估算法和自下而上的成本汇总估算法。这两种方法各有优缺点&#xff0c;但都可以帮助我们准确地估算项目工作成本。 自上而下的成本限额估算法 自上…

InnoDB中Buffer Pool详解

1. 概念及特点 Buffer Pool 是 MySQL 中 InnoDB 存储引擎用来缓存表数据和索引数据的内存区域。这个内存区域被用来存储磁盘上的数据页的副本&#xff0c;这样常用的数据可以在内存中快速被访问&#xff0c;而不必每次都从磁盘中读取。 以下是 Buffer Pool 的一些重要特点&a…