闲着没事自己写了一个OracleHelper类,希望大神给点建议优化

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.OracleClient; namespace Common
{
public class DBHelper
{
private string connectionstring { get; set; } = System.Configuration.ConfigurationManager.ConnectionStrings["cms_mh"].ConnectionString; public DBHelper()
{
OpenConnection();
} /// <summary>
/// 根据配置节读取连接数据库
/// </summary>
/// <param name="key">需要连接的数据库</param>
public DBHelper(string key)
{
this.connectionstring = System.Configuration.ConfigurationManager.ConnectionStrings[key].ConnectionString;
OpenConnection();
} /// <summary>
/// 定义Oracle连接
/// </summary>
private OracleConnection conn { get; set; } private OracleCommand cmd;
/// <summary>
/// 打开连接
/// </summary>
public void OpenConnection()
{
if (conn == null)
conn = new OracleConnection(connectionstring);
if (conn.State == ConnectionState.Closed)
conn.Open();
} /// <summary>
/// 构建返回Command
/// </summary>
/// <param name="cmdText">CommandText</param>
/// <param name="cmd">需要返回的Command</param>
/// <param name="cmdType">执行类型</param>
/// <param name="param">参数列表</param>
public void BuilderCommand(string cmdText, out OracleCommand cmd, CommandType cmdType, params OracleParameter[] param)
{
cmd = new OracleCommand();
cmd.Connection = conn;
cmd = conn.CreateCommand();
cmd.CommandType = cmdType;
cmd.CommandText = cmdText;
foreach (var item in param)
{
cmd.Parameters.Add(item);
}
} /// <summary>
/// 执行存储过程
/// </summary>
/// <param name="storedName">存储过程名称</param>
/// <param name="param">参数列表</param>
/// <returns>返回执行成功条数</returns>
public int ExecuteStored(string storedName, params OracleParameter[] param)
{
BuilderCommand(storedName, out cmd, CommandType.StoredProcedure, param);
return cmd.ExecuteNonQuery();
} /// <summary>
/// 获取DataSet
/// </summary>
/// <param name="cmdText">执行语句</param>
/// <returns>DataSet</returns>
public DataSet GetDateSet(string cmdText, params OracleParameter[] param)
{
using (OracleDataAdapter _da = new OracleDataAdapter(cmdText, conn))
{
DataSet ds = new DataSet();
_da.Fill(ds);
return ds;
}
} /// <summary>
/// 获取Table
/// </summary>
/// <param name="cmdText">执行语句</param>
/// <returns>DataTable</returns>
public DataTable GetTable(string cmdText)
{
return GetDateSet(cmdText).Tables[];
} /// <summary>
/// 执行sql
/// </summary>
/// <param name="cmdText">执行语句</param>
/// <param name="param">执行所需参数</param>
/// <returns>成功执行数</returns>
public int ExecuteSql(string cmdText, params OracleParameter[] param)
{
OracleCommand cmd = new OracleCommand();
BuilderCommand(cmdText, out cmd, CommandType.Text, param);
return cmd.ExecuteNonQuery();
} /// <summary>
/// 构建DataReader
/// </summary>
/// <param name="cmdText">执行语句</param>
/// <param name="param">执行所需参数</param>
/// <returns>DataReader</returns>
public OracleDataReader BuilderDataReader(string cmdText, params OracleParameter[] param)
{
BuilderCommand(cmdText, out cmd, CommandType.Text, param);
return cmd.ExecuteReader();
}
}
}

c#连接oracle数据库 DBHelper的更多相关文章

  1. java连接Oracle数据库

    Oracle数据库先创建一个表和添加一些数据 1.先在Oracle数据库中创建一个student表: create table student ( id ) not null primary key, ...

  2. 记录排查解决Hubble.Net连接Oracle数据库建立镜像库数据丢失的问题

    起因 前几天在弄Hubble连接Oracle数据库,然后在mongodb中建立一个镜像数据库; 发现一个问题,原本数据是11W,但是镜像库中只有6w多条; 刚开始以为是没运行好,又rebuild了一下 ...

  3. NodeJs连接Oracle数据库

    nodejs连接oracle数据库,各个平台的官方详情文档:https://github.com/oracle/node-oracledb/blob/master/INSTALL.md 我的nodej ...

  4. jdbc连接oracle数据库

    /*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...

  5. 用VS连接oracle数据库时ORA-12504错误

    在用VS2008连接oracle数据库时,可能会出现: ORA-12504: TNS: 监听程序在 CONNECT_DATA 中未获得 SERVICE_NAME 只需在web.config文件Data ...

  6. ASP.NET连接Oracle数据库的步骤详解(转)

    ASP.NET连接Oracle数据库的步骤详解   本文我们主要介绍了ASP.NET连接Oracle数据库的步骤及每个步骤需要进行的设置,希望能够对您有所帮助.   在用ASP.NET开发应用程序时, ...

  7. 64 位win 7或windows 8下的visual studio不能连接Oracle数据库调试网站的问题

    在64 位win 7或windows 8系统下,visual studio直接F5运行网站调试,你会发现不能连接Oracle数据库,会报一个“ORA-06413: Connection not ope ...

  8. [原创]安装Oracle 11gR2,以及如何在win8下使用plsql develper连接Oracle数据库 ,在这里和大家分享下

    一,关于win8下安装Oracle 11gR2 1.我下载的是Oracle_11gR2_win64.其中有两个包: 注意:在解压了之后将:win64_11gR2_database_2of2\datab ...

  9. 用Navicat连接Oracle数据库时报错ORA-28547:connection to server failed,probable Oracle Net admin error

    用Navicat连接Oracle数据库时出现如下错误 上网一查原来是oci.dll版本不对.因为Navicat是通过Oracle客户端连接Oracle服务器的,Oracle的客户端分为两种,一种是标准 ...

随机推荐

  1. 学习Python第七天

    进制拾遗: 二进制:01 八进制:01234567 十进制:0123456789 十六进制:0123456789ABCDEF 十进制转换八,十六进制语法 oct()八进制 关于8进制是逢8进一位的,我 ...

  2. grep,sed,awk用法整理

    grep -c 打印出符合要求的行数 -i 忽略大小写              ignore -n 连同符号一起输出          num -v 打印出不符合要求的行 -A2 本行及下面两行 - ...

  3. linux根目录介绍

    1. /bin binary二进制 存放系统许多可执行程序文件 执行的相关指令,例如ls pwd whoami,后台的支持文件目录 2. /sbin super binary超级的二进制 存放系统许多 ...

  4. MySQL--REPLACE INTO与自增

    ##=====================================================================##测试环境:MySQL版本:MySQL 5.7.19复制 ...

  5. SQL Server profile使用技巧

    200 ? "200px" : this.width)!important;} --> 介绍 经常会有人问profile工具该怎么使用?有没有方法获取性能差的sql的问题.自 ...

  6. GIT学习笔记——常用命令

    最近使用使用GIT较多,但命令很容易就忘记了,于是整理下,大多整理与一些文档和他人博客 在当前目录新建建一个纯git代码库 $ git --bare init 在当前目录新建一个Git代码库 $ gi ...

  7. while(true)应用之 实现自己的消息队列

    早些时候,一直有个疑问,就是比如你从前端发一个操作之后,后台为什么能够及时处理你的东西呢?当然了,我说的不是,服务器为什么能够立即接收到你的请求之类高大上的东西.而是,假设你用异步去做一个事情,而后台 ...

  8. PyTorch--双向递归神经网络(B-RNN)概念,源码分析

    关于概念: BRNN连接两个相反的隐藏层到同一个输出.基于生成性深度学习,输出层能够同时的从前向和后向接收信息.该架构是1997年被Schuster和Paliwal提出的.引入BRNNS是为了增加网络 ...

  9. TensorFlow中的变量和常量

    1.TensorFlow中的变量和常量介绍 TensorFlow中的变量: import tensorflow as tf state = tf.Variable(0,name='counter') ...

  10. 【新手向】使用nodejs抓取百度贴吧内容

    参考教程:https://github.com/alsotang/node-lessons 1~5节 1. 通过superagent抓取页面内容 superagent .get('http://www ...