zoukankan      html  css  js  c++  java
  • OracleHelper(for produce)

    OracleHelper中,有一个用存储过程实现的Insert方法。

    然后我把执行存储过程的方法 封装成了可以执行任何存储过程,参数是 存储过程名称 以及存错过程中的传入、传出参数

    using Oracle.DataAccess.Client;
    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace DIDAO.DAL
    {
        public class OracleHelper
        {
            //链接字符串
            private static readonly string connStr = ConfigurationManager.ConnectionStrings["dbconnStr"].ConnectionString;
    
            /// <summary>
            /// 创建链接
            /// </summary>
            /// <returns>链接</returns>
            public static OracleConnection CreateConnection()
            {
                OracleConnection conn = new OracleConnection(connStr);
                conn.Open();
                return conn;
            }
    
            /// <summary>
            /// 使用亦有链接的 非查询
            /// </summary>
            /// <param name="conn">链接</param>
            /// <param name="sql">sql文本</param>
            /// <param name="parameters">sql参数</param>
            /// <returns>受影响行数</returns>
            public static int ExecuteNonQuery(OracleConnection conn,string sql,params OracleParameter[] parameters)
            { 
                using(OracleCommand cmd=new OracleCommand(sql,conn))
                {
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteNonQuery();
                }
            }
    
            /// <summary>
            /// 自己创建链接的 非查询
            /// </summary>
            /// <param name="sql">sql文本</param>
            /// <param name="parameters">sql参数</param>
            /// <returns>受影响行数</returns>
            public static int ExecuteNonQuery(string sql, params OracleParameter[] parameters)
            {
                using (OracleConnection conn = CreateConnection())
                {
                    return ExecuteNonQuery(conn, sql, parameters);
                }
            }
    
            /// <summary>
            /// 使用已有链接的 带存储过程的Insert非查询,直接写存储过程参数
            /// </summary>
            /// <param name="conn">已有链接</param>
            /// <param name="proName">存储过程名称</param>
            /// <param name="strInsertSQL">执行插入的sql语句,或者其他操作sql语句</param>
            /// <param name="seqName">序列的名称</param>
            /// <returns>当前序列号,即ID</returns>
            public static object ExecuteNonQueryWithProduce(OracleConnection conn, string proName, string strInsertSQL, string seqName)
            {
                using (OracleCommand cmd = new OracleCommand(proName, conn)) //命令中执行的不在是sql,而是存储过程
                {
                    try
                    {
                        cmd.CommandType = CommandType.StoredProcedure; //标记该命令的类型不是sql,而是存储过程
                        //存储过程中有参数名称,以及设置对应参数的值
                        cmd.Parameters.Add(new OracleParameter("strInsertSQL", OracleDbType.Varchar2) { Value = strInsertSQL }); ////存储过程中的参入参数 strInsertSQL
                        cmd.Parameters.Add(new OracleParameter("seqName", OracleDbType.Varchar2) { Value = seqName }); // //存储过程中的传入参数 seqName
                        cmd.Parameters.Add(new OracleParameter("ID", OracleDbType.Int64) { Direction = ParameterDirection.Output }); //存储过程中的传出参数ID,只需要声明
                        //cmd.Parameters.AddRange(parameters);
                        cmd.ExecuteNonQuery();
                        string newId = cmd.Parameters["ID"].Value.ToString(); //获得传出参数的ID的值
                        return newId;
                    }
                    catch(Exception ex)
                    {
                        throw new Exception(ex.ToString());
                    }
                }
            }
    
            /// <summary>
            /// 自己创建链接的 带存储过程的Insert非查询,直接写存储过程参数
            /// </summary>
            /// <param name="proName">存储过程名称</param>
            /// <param name="strInsertSQL">执行插入的sql语句,或者其他操作sql语句</param>
            /// <param name="seqName">序列的名称</param>
            /// <returns>当前序列号,即ID</returns>
            public static object ExecuteNonQueryWithProduce(string proName, string strInsertSQL, string seqName)
            {
                using (OracleConnection conn = CreateConnection())
                {
                    return ExecuteNonQueryWithProduce(conn, proName, strInsertSQL, seqName);
                }
            }
    
            /// <summary>
            /// 使用已有链接的 带存储过程的Insert非查询,传存储过程参数
            /// </summary>
            /// <param name="conn">已有链接</param>
            /// <param name="proName">存储过程名称</param>
            /// <param name="parameters">存储过程中的传入、传出参数 数组</param>
            /// <returns>当前序列号,即ID</returns>
            public static object ExecuteNonQueryWithProduce(OracleConnection conn, string proName, params OracleParameter[] parameters)
            {
                using (OracleCommand cmd = new OracleCommand(proName, conn)) //命令中执行的不在是sql,而是存储过程
                {
                    try
                    {
                        cmd.CommandType = CommandType.StoredProcedure; //标记该命令的类型不是sql,而是存储过程
                        ////存储过程中有参数名称,以及设置对应参数的值
                        //cmd.Parameters.Add(new OracleParameter("strInsertSQL", OracleDbType.Varchar2) { Value = strInsertSQL }); ////存储过程中的参入参数 strInsertSQL
                        //cmd.Parameters.Add(new OracleParameter("seqName", OracleDbType.Varchar2) { Value = seqName }); // //存储过程中的传入参数 seqName
                        //cmd.Parameters.Add(new OracleParameter("ID", OracleDbType.Int32) { Direction = ParameterDirection.Output }); //存储过程中的传出参数ID,只需要声明
                        cmd.Parameters.AddRange(parameters); //参数中包括存储过程的传入传出参数,以及子sql语句中的参数    --------------****-----------------
                        int i = cmd.ExecuteNonQuery(); //直接返回执行插入之后,存储过程传出的变量值
                        string newId = cmd.Parameters["ID"].Value.ToString(); //获得传出参数的ID的值
                        return newId;
                    }
                   catch (Exception ex)
                    {
                        throw new Exception(ex.ToString());
                    }
                }
            }
    
            /// <summary>
            /// 自己创建链接的 带存储过程的Insert非查询,传存储过程参数
            /// </summary>
            /// <param name="proName">存储过程名称</param>
            /// <param name="parameters">存储过程中的传入、传出参数 数组</param>
            /// <returns>当前序列号,即ID</returns>
            public static object ExecuteNonQueryWithProduce(string proName,params OracleParameter[] parameters)
            {
                using (OracleConnection conn = CreateConnection())
                {
                    return ExecuteNonQueryWithProduce(conn, proName, parameters);
                }
            }
            
    
            /// <summary>
            /// 使用已有链接的 单查询
            /// </summary>
            /// <param name="conn">链接</param>
            /// <param name="sql">sql文本</param>
            /// <param name="parameters">sql参数</param>
            /// <returns>查询到的一条结果</returns>
            public static object ExecuteScalar(OracleConnection conn,string sql,params OracleParameter[] parameters)
            { 
                using(OracleCommand cmd=new OracleCommand(sql,conn))
                {
                    cmd.Parameters.AddRange(parameters);
                    return cmd.ExecuteScalar();
                }
            }
    
            /// <summary>
            /// 自己创建链接的 单查询
            /// </summary>
            /// <param name="sql">sql文本</param>
            /// <param name="parameters">sql参数</param>
            /// <returns>查询到的一条结果</returns>
            public static object ExecuteScalar(string sql,params OracleParameter[] parameters)
            { 
                using(OracleConnection conn=CreateConnection())
                {
                    return ExecuteScalar(conn, sql, parameters);
                }
            }
    
            /// <summary>
            /// 使用已有链接的 reader查询
            /// </summary>
            /// <param name="conn">链接</param>
            /// <param name="sql">sql文本</param>
            /// <param name="parameters">sql参数</param>
            /// <returns>查询到的结果集table</returns>
            public static DataTable ExecuteReader(OracleConnection conn,string sql,params OracleParameter[] parameters)
            {
                DataTable table = new DataTable();
                using(OracleCommand cmd=new OracleCommand(sql,conn))
                {
                    cmd.Parameters.AddRange(parameters);
                    using (OracleDataReader reader = cmd.ExecuteReader())
                    {
                        table.Load(reader);
                    }
                }
                return table;
            }
    
            /// <summary>
            /// 自己创建链接的 reader查询
            /// </summary>
            /// <param name="sql">sql文本</param>
            /// <param name="parameters">sql参数</param>
            /// <returns>查询到的结果集table</returns>
            public static DataTable ExecuteReader(string sql,params OracleParameter[] parameters)
            { 
                using(OracleConnection conn=CreateConnection())
                {
                    return ExecuteReader(conn, sql, parameters);
                }
            }
    
            /// <summary>
            /// 使用已有链接的 stream查询
            /// </summary>
            /// <param name="conn">链接</param>
            /// <param name="sql">sql文本</param>
            /// <param name="parameters">sql参数</param>
            /// <returns>查询到的结果流stream</returns>
            public static System.IO.Stream ExecuteStream(OracleConnection conn,string sql,params OracleParameter[] parameters)
            { 
                using(OracleCommand cmd=new OracleCommand(sql,conn))
                {
                    cmd.Parameters.AddRange(parameters);
                    using (System.IO.Stream stream = cmd.ExecuteStream())
                    {
                        return stream;
                    }
                }
            }
    
            /// <summary>
            /// 自己创建链接的stream查询
            /// </summary>
            /// <param name="sql">sql文本</param>
            /// <param name="parameters">sql参数</param>
            /// <returns>查询到的结果流stream</returns>
            public static System.IO.Stream ExecuteStream(string sql, params OracleParameter[] parameters)
            {
                using(OracleConnection conn=CreateConnection())
                {
                    return ExecuteStream(conn, sql, parameters);
                }
            }
        }
    }
    OracleHelper(for produce)
  • 相关阅读:
    mysql 启动不了,报错InnoDB相关
    vue 根据屏幕大小重新加载 echarts
    echarts 图例样式
    canvas 创建的图表,在移动端时,手指触碰,无法上下滑动页面
    uni-app 左上角返回按钮消失
    uni-app 缓存无法读取问题
    hbuider 运行 uni-app PC使用安卓模拟器接口请求错误
    wbstrom 使用git提交代码
    后端路由正常,但页面空白
    算法——RSA算法原理(转)
  • 原文地址:https://www.cnblogs.com/adolphyang/p/4752175.html
Copyright © 2011-2022 走看看