using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Configuration;
using System.Data;
using System.Data.OracleClient;

namespace AirplaneTicketSubscribeObject.DAL
{
/// <summary>
/// OracleServer数据库访问的通用工具类
/// </summary>
public abstract class OracleHelper
{
//只读的静态数据库连接字符串
public static readonly string connString = ConfigurationManager.ConnectionStrings["OracleStr"].ConnectionString;

#region 执行 增 删 改
/// <summary>
/// 执行 增 删 改
/// </summary>
/// <param name="Oracle">要执行的Oracle</param>
/// <param name="param">参数</param>
/// <returns>影响行数</returns>
public static int ExecuteNonQuery(string sql,params OracleParameter[] param)
{
//实例化连接对象,并指定连接字符串,自动释放资源,不用关闭
using (OracleConnection conn = new OracleConnection(connString))
{
//实例化命令对象,指定Oracle,与连接对象
using (OracleCommand cmd = new OracleCommand(sql, conn))
{
//如果有参数
if (param != null)
{
//批量添加参数
cmd.Parameters.AddRange(param);
}
//打开连接
conn.Open();
//执行Oracle并返回影响行数
return cmd.ExecuteNonQuery();
}
}
}
#endregion

#region 执行 查询
/// <summary>
/// 执行 查询
/// </summary>
/// <param name="Oracle">要执行的Oracle</param>
/// <param name="param">参数</param>
/// <returns>数据集</returns>
public static OracleDataReader ExecuteReader(string Oracle,params OracleParameter[] param)
{
//实例化连接对象,并指定连接字符串
OracleConnection conn = new OracleConnection(connString);
//实例化命令对象,指定Oracle,与连接对象
using (OracleCommand cmd = new OracleCommand(Oracle, conn))
{
//如果有参数
if (param != null)
{
//批量添加参数
cmd.Parameters.AddRange(param);
}
//打开连接
conn.Open();
//执行Oracle并返回影响行数,如果将返回的OracleDataReader关闭时也将关闭连接
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
}

/// <summary>
/// 执行查询存储过程,并且返回一个OracleDataReader对象(使用OracleDataReader对象执行)
/// </summary>
/// <param name="sql">存储过程名</param>
/// <param name="ps">存储过程中需要的参数</param>
/// <returns>读取器对象</returns>
public static OracleDataReader ExecuteReaderProc(string Oracle, params OracleParameter[] param)
{
//实例化连接对象,并指定连接字符串
OracleConnection conn = new OracleConnection(connString);
//实例化命令对象,指定Oracle,与连接对象
using (OracleCommand cmd = new OracleCommand(Oracle, conn))
{
//如果有参数
if (param != null)
{
//批量添加参数
cmd.Parameters.AddRange(param);
}
//打开连接
conn.Open();
cmd.CommandType = CommandType.StoredProcedure;
//执行Oracle并返回影响行数,如果将返回的OracleDataReader关闭时也将关闭连接
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
}

#endregion

#region 完成数据的查询,返回DataTable
/// <summary>
/// 完成数据的查询,返回DataTable
/// </summary>
/// <param name="Oracle">要执行的Oracle</param>
/// <param name="param">参数</param>
/// <returns>DataTable</returns>
public static DataTable GetTable(string sql,params OracleParameter[] param)
{
//实例化连接对象,并指定连接字符串,自动释放资源,不用关闭
using (OracleConnection conn = new OracleConnection(connString))
{
OracleDataAdapter adp = new OracleDataAdapter(sql, conn);
if (param != null)
{
adp.SelectCommand.Parameters.AddRange(param);
}
DataTable dt = new DataTable();
adp.Fill(dt);
return dt;
}
}
#endregion
#region 返回首行首列
/// <summary>
/// 返回首行首列
/// </summary>
/// <param name="OracleSql">要执行的OracleSql</param>
/// <param name="param">参数</param>
/// <returns></returns>
public static int ExecuteCount(string OracleSql, params OracleParameter[] param)
{
//实例化连接对象,并指定连接字符串
OracleConnection conn = new OracleConnection(connString);
//实例化命令对象,指定Oracle,与连接对象
using (OracleCommand cmd = new OracleCommand(OracleSql, conn))
{
//如果有参数
if (param != null)
{
//批量添加参数
cmd.Parameters.AddRange(param);
}
//打开连接
conn.Open();
//执行Oracle并返回影响行数,如果将返回的OracleDataReader关闭时也将关闭连接
return Convert.ToInt32(cmd.ExecuteScalar());
}
}
#endregion

internal static void Close()
{
throw new NotImplementedException();
}
}

}

OracleHelper.cs的更多相关文章

  1. 连接Oracle数据库的OracleHelper.cs

    using System; using System.Configuration; using System.Data; using System.Data.OracleClient; using S ...

  2. OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)

    公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...

  3. 『片段』OracleHelper (支持 多条SQL语句)

    C# 调用 Oracle 是如此尴尬 >System.Data.OracleClient.dll —— .Net 自带的 已经 过时作废. >要链接 Oracle 服务器,必须在 本机安装 ...

  4. 数据库连接类oracleHelper

    //=============================================================================== // OracleHelper ba ...

  5. DbHelper and OracleHelper

    1 连接Sql Server的ConnectionString: Data Source=.;Initial Catalog=ViewVideo;User ID=sa;Password=XXXXXX; ...

  6. Oracle操作数据库oracleHelper

    1 Oracle OracleHelper //============================================================================ ...

  7. C# 调用 Oracle

    C# 调用 Oracle 是如此尴尬 >System.Data.OracleClient.dll —— .Net 自带的 已经 过时作废. >要链接 Oracle 服务器,必须在 本机安装 ...

  8. 通用权限管理系统底层更换最新Oracle驱动的方法

    通用权限管理系统底层先前访问Oracle数据库时需要客户端安装驱动软件,如下图: 安装完毕还需要一番配置,系统再引用其dll, 现在我们使用了最新的dll 该dll是Oracle出的最新的版本. 通用 ...

  9. Oracle数据库操作类及连接方法

    创建DataBaseAccess引用库下面包括DBConnectionString.cs,DBType.cs ,SysName.cs 三个类 DBConnectionString: using Sys ...

随机推荐

  1. Echarts 获取后台数据 使用后台数据展示 柱形图

    后台数据要以json格式返回 页面:引用echarts.js , 然后data以ajax的数据请求并返回 <%@ page language="java" import=&q ...

  2. Deep Learning论文笔记之(三)单层非监督学习网络分析

    Deep Learning论文笔记之(三)单层非监督学习网络分析 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感 ...

  3. RxJava2.0教程

    尝试在新的项目中,引用一些流行的优秀的开源框架,在简书上偶然发现一篇很棒的写RxJava 2.0的帖子,个人认为非常适合Android开发者,你可以先知道怎么使用,然后再弄清楚里面做了哪些事情,例如可 ...

  4. nodejs之SVG转图片下载方案

    本文介绍在nodejs基础上.怎样实现将svg转为png并下载的功能. 所需Webkit和node module简单介绍: phantomjs:一个基于WebKit的server端JavaScript ...

  5. 关于HTML、js加密、混淆、源码保护、代码安全,防止解压直接看源码

    一直有人问HTML加密混淆怎么做,其实这在业内是早已很多人研究过的课题.假日期间整理一篇文章分享给大家. 我们先理下需求,加密的目的是什么?加密到什么级别?为此我们可以牺牲什么?我们知道这个世界不存在 ...

  6. WindowManager.LayoutParams全解

    WindowManager是Android中一个重要的服务(Service ).WindowManager Service 是全局的,是唯一的.它将用户的操作,翻译成为指令,发送给呈现在界面上的各个W ...

  7. <译>Zookeeper官方文档

    apache原文地址:http://zookeeper.apache.org/doc/trunk/zookeeperOver.html ZooKeeper ZooKeeper: A Distribut ...

  8. MiniHttpServer

    Mini HTTP Server which can be embed in EXE, Writen in C#(.net framework 2.0). HTTP request dispatch/ ...

  9. windowsclient开发--怎样測量一个字符串显示的物理长度

    首先须要说明的是,我所说的字符串的长度,不是string的length,也不是string的size.我指的是显示的长度.即物理长度. 缘由: 之所以要提到这个.是由于遇到了一些问题. 再使用duil ...

  10. c++ builder xe2 debug正常 release崩溃 解决一例

    今天修改了以前一个项目的代码,是一个exe程序  C++ builder xe2 编译.以前都是好的.今天改了一下版本号 编译了一下,居然不能用了.直接崩溃 提示内存非法访问.而且显然还没有进入Win ...