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)
OracleHelper(for produce)的更多相关文章
- 获得Oracle中刚插入的数据的ID(for produce)
在sql sever中实现插入数据的自动增长是很容易的,但是在oracle数据库中实现这一操作不是很容易,同时要想在.net中实现获取新插入数据的id,而 且不会出现读错的情况,就更显得困难了,为了解 ...
- 15个最佳的代码评审(Code Review)工具
代码评审可以被看作是计算机源代码的测试,它的目的是查找和修复引入到开发阶段的应用程序的错误,提高软件的整体素质和开发者的技能.代码审查程序以各种形式,如结对编程,代码抽查等.在这个列表中,我们编制了1 ...
- Oracle之多行记录变一行记录,行变列,并排序(wmsys.wm_concat)
原帖:http://www.cnblogs.com/nayitian/p/3231734.html wmsys.wm_concat Definition: The Oracle PL/SQL WM_C ...
- Spring 4 官方文档学习(十二)View技术
关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...
- iOS 10.0 更新点(开发者视角)
html, body {overflow-x: initial !important;}html { font-size: 14px; } body { margin: 0px; padding: 0 ...
- Java设计模式-工厂方法模式(Factory Method)
工厂方法模式(Factory Method) 工厂模式适合:凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建.在以下的三种模式中,第一种如果传入的字符串有误,不能正确创 ...
- 优先队列(Priority Queue)
优先队列(Priority Queue) A priority queue must at least support the following operations: insert_with_pr ...
- H264学习第一篇(编码结构分析)
学习H264之前,最好阅读一下维基百科中有关H264的相关介绍,里面包含了其的发展历程.主要特点.参考文献.参考网站等. 研究H264的主要文件包括两份参考手册(一份是语法结构参考手册,一份是JM开发 ...
- WebApi学习总结系列第四篇(路由系统)
由于工作的原因,断断续续终于看完了<ASP.NET Web API 2 框架揭秘>第二章关于WebApi的路由系统的知识. 路由系统是请求消息进入Asp.net WebApi的第一道屏障, ...
随机推荐
- HDU4670 Cube number on a tree 树分治
人生的第一道树分治,要是早点学我南京赛就不用那么挫了,树分治的思路其实很简单,就是对子树找到一个重心(Centroid),实现重心分解,然后递归的解决分开后的树的子问题,关键是合并,当要合并跨过重心的 ...
- 【mysql的编程专题】触发器
类似tp里面的数据模型回调接口,在数据表增删改的前或后触发执行其他的预订的sql; 一个触发器要具备4要素: 1.监视地点 -- 要执行触发器的表 2.监视事件 -- 由什么DML事件来牵引 3.触发 ...
- PowerDesigner概念模型的Notation设置
原文:PowerDesigner概念模型的Notation设置 在进行数据库设计模型时,分为概念模型设计和物理模型设计两种,概念模型主要是反映真是 世界中的业务关系,也就是我们常用的实体关系图.物理模 ...
- C++:运算符重载函数之"++"、"--"、"[ ]"、"=="的应用
5.2.5 "++"和"--"的重载 对于前缀方式++ob,可以用运算符函数重载为: ob.operator++() //成员函数重载 或 operator++ ...
- Android 给listview设置分割线与边界的距离
ListView可通过配置 android:dividerline android:dividerHeight 来实现分割listview中item的效果,如图: 如果想跟上图一样实现这种有设计的分割 ...
- 从Uboot到Linux技术内幕
1. 引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行.一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序.包括固化在固件(firmware) ...
- 【Latex】如何在Latex中插入伪代码 —— clrscode3e
1. 简介clrscode3e是<算法导论(第三版)>使用的伪代码的宏包,clrs其实表示的是Cormen.Leiserson.Rivest和Stein.它有个更老的版本clrscode, ...
- n人比赛,可轮空,比赛轮数和场数
#include<stdio.h> int chang(int x,int s){ ) return s; ) ; !=){ s+=(x-)/; )/,s); } else{ s+=x/; ...
- TUXEDO错误解决方案
错误1: root@tfjus:/opt/tuxedo/simpapp# buildclient -f simpcl.c -o simpcl simpcl.c: In function 'main': ...
- SecureCRT访问开发板linux系统
前言: 最近在用OK6410开发板跑linux系统,经常在终端上敲一些指令,无奈开发板屏幕太小用起来非常不方便,所以使用终端一款能运行在windows上的软件与开发板连接,直接在电脑上操作开发板了,这 ...