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)

OracleHelper(for produce)的更多相关文章

  1. 获得Oracle中刚插入的数据的ID(for produce)

    在sql sever中实现插入数据的自动增长是很容易的,但是在oracle数据库中实现这一操作不是很容易,同时要想在.net中实现获取新插入数据的id,而 且不会出现读错的情况,就更显得困难了,为了解 ...

  2. 15个最佳的代码评审(Code Review)工具

    代码评审可以被看作是计算机源代码的测试,它的目的是查找和修复引入到开发阶段的应用程序的错误,提高软件的整体素质和开发者的技能.代码审查程序以各种形式,如结对编程,代码抽查等.在这个列表中,我们编制了1 ...

  3. Oracle之多行记录变一行记录,行变列,并排序(wmsys.wm_concat)

    原帖:http://www.cnblogs.com/nayitian/p/3231734.html wmsys.wm_concat Definition: The Oracle PL/SQL WM_C ...

  4. Spring 4 官方文档学习(十二)View技术

    关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...

  5. iOS 10.0 更新点(开发者视角)

    html, body {overflow-x: initial !important;}html { font-size: 14px; } body { margin: 0px; padding: 0 ...

  6. Java设计模式-工厂方法模式(Factory Method)

    工厂方法模式(Factory Method) 工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建.在以下的三种模式中,第一种如果传入的字符串有误,不能正确创 ...

  7. 优先队列(Priority Queue)

    优先队列(Priority Queue) A priority queue must at least support the following operations: insert_with_pr ...

  8. H264学习第一篇(编码结构分析)

    学习H264之前,最好阅读一下维基百科中有关H264的相关介绍,里面包含了其的发展历程.主要特点.参考文献.参考网站等. 研究H264的主要文件包括两份参考手册(一份是语法结构参考手册,一份是JM开发 ...

  9. WebApi学习总结系列第四篇(路由系统)

    由于工作的原因,断断续续终于看完了<ASP.NET Web API 2 框架揭秘>第二章关于WebApi的路由系统的知识. 路由系统是请求消息进入Asp.net WebApi的第一道屏障, ...

随机推荐

  1. linux系统清空文件内容

    本文转载至:http://www.jbxue.com/LINUXjishu/14410.html 本文介绍下,在linux系统中,清空文件内容的方法,使用cat命令.echo命令,将文件内容截断为0字 ...

  2. Android开发--解决AndroidADT开发工具不能代码提示的问题

    google android的新的开发工具,打开以后没有代码自动提示功能,下面对ADT工具的一些配置: 1.设置代码的字体 设置JAVA文件代码的字体:我这里设置的14 常规.

  3. lintcode: 把排序数组转换为高度最小的二叉搜索树

    题目: 把排序数组转换为高度最小的二叉搜索树 给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树. 样例 给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / ...

  4. iOS视频录制、压缩导出、取帧

    概述 花了点时间研究了一下常用的视频获取.录制.压缩.取帧图功能,分享给大家了!相信阅读完本篇文章,会对你有很大的帮助的! 本篇文章研究几下以个功能: 视频录制 从相册选择视频 保持视频到相册 获取视 ...

  5. Zookeeper安装部署

    Zookeeper安装 1. 安装 wget http://www.apache.org/dist//zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz ...

  6. HTML5 文件API(二)

    1.FileSystem概述及浏览器检 2.申请磁盘配额 3.创建文件

  7. 8、SpringMVC源码分析(3):分析ModelAndView的形成过程

    首先,我们还是从DispatcherServlet.doDispatch(HttpServletRequest request, HttpServletResponse response) throw ...

  8. 转Java 回调函数的理解

    所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数.例如Win32下的窗口过程函数就是一个典型的回调函数.一般说来,C ...

  9. LingPipe-TextClassification(文本分类)

    What is Text Classification? Text classification typically involves assigning a document to a catego ...

  10. Android 中Activity生命周期分析(二):从AActivity 到BActivity过程分析

    如果你没有动手去演示的话,你一定要去动手试试看,这个东西非学容易出错,面试中经常出现,好了,上代码: package com.king.review.base; import android.app. ...