c#连接oracle数据库 DBHelper
闲着没事自己写了一个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的更多相关文章
- java连接Oracle数据库
Oracle数据库先创建一个表和添加一些数据 1.先在Oracle数据库中创建一个student表: create table student ( id ) not null primary key, ...
- 记录排查解决Hubble.Net连接Oracle数据库建立镜像库数据丢失的问题
起因 前几天在弄Hubble连接Oracle数据库,然后在mongodb中建立一个镜像数据库; 发现一个问题,原本数据是11W,但是镜像库中只有6w多条; 刚开始以为是没运行好,又rebuild了一下 ...
- NodeJs连接Oracle数据库
nodejs连接oracle数据库,各个平台的官方详情文档:https://github.com/oracle/node-oracledb/blob/master/INSTALL.md 我的nodej ...
- jdbc连接oracle数据库
/*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...
- 用VS连接oracle数据库时ORA-12504错误
在用VS2008连接oracle数据库时,可能会出现: ORA-12504: TNS: 监听程序在 CONNECT_DATA 中未获得 SERVICE_NAME 只需在web.config文件Data ...
- ASP.NET连接Oracle数据库的步骤详解(转)
ASP.NET连接Oracle数据库的步骤详解 本文我们主要介绍了ASP.NET连接Oracle数据库的步骤及每个步骤需要进行的设置,希望能够对您有所帮助. 在用ASP.NET开发应用程序时, ...
- 64 位win 7或windows 8下的visual studio不能连接Oracle数据库调试网站的问题
在64 位win 7或windows 8系统下,visual studio直接F5运行网站调试,你会发现不能连接Oracle数据库,会报一个“ORA-06413: Connection not ope ...
- [原创]安装Oracle 11gR2,以及如何在win8下使用plsql develper连接Oracle数据库 ,在这里和大家分享下
一,关于win8下安装Oracle 11gR2 1.我下载的是Oracle_11gR2_win64.其中有两个包: 注意:在解压了之后将:win64_11gR2_database_2of2\datab ...
- 用Navicat连接Oracle数据库时报错ORA-28547:connection to server failed,probable Oracle Net admin error
用Navicat连接Oracle数据库时出现如下错误 上网一查原来是oci.dll版本不对.因为Navicat是通过Oracle客户端连接Oracle服务器的,Oracle的客户端分为两种,一种是标准 ...
随机推荐
- [转] AppArmor
AppArmor https://help.ubuntu.com/14.04/serverguide/apparmor.html AppArmor 是一个实施了基于名称强制存取控制的Linux安全模组 ...
- Openvswitch手册(5): VLAN and Bonding
我们这一节来看Port 一般来说一个Port就是一个Interface,当然也有一个Port对应多个Interface的情况,成为Bond VLAN Configuration Port的一个重要的方 ...
- VSCode插件开发全攻略(十)打包、发布、升级
更多文章请戳VSCode插件开发全攻略系列目录导航. 发布方式 插件开发完了,如何发布出去分享给他人呢?主要有3种方法: 方法一:直接把文件夹发给别人,让别人找到vscode的插件存放目录并放进去,然 ...
- 大叔学ML第四:线性回归正则化
目录 基本形式 梯度下降法中应用正则化项 正规方程中应用正则化项 小试牛刀 调用类库 扩展 正则:正则是一个汉语词汇,拼音为zhèng zé,基本意思是正其礼仪法则:正规:常规:正宗等.出自<楚 ...
- 【高速接口-RapidIO】2、RapidIO串行物理层的包与控制符号
一.RapidIO串行物理层背景介绍 上篇博文提到RapidIO的物理层支持串行物理层与并行物理层两种,由于Xilinx 部分FPGA内部已经集成了串行高速收发器,所以用FPGA实现RapidIO大多 ...
- 新鲜出炉的一套Java面试题
作者:孤独烟 由于近期是互联网寒冬,然而烟哥的好友还是顶着重重压力出去面试,最终斩获无数offer.在烟哥的沟通下,终于套得其中一套题目,故在此分享! 公司:国内三巨头其中的一家!面试时间约在1月份左 ...
- Android开发之如何避免ANR(Keeping Your App Responsive)
一:什么是ANR 如果应用程序不能响应用户的输入了,那么就可以说应用ANR了. 如果需要运行一个耗时较长的操作的时候,不要把这个任务放在UI线程上运行,而是单独创建一个线程运行那些操作. 以下情况会出 ...
- Javascript高级编程学习笔记(19)—— 对象属性
面向对象的语言有一个标志,那就是语言中都有类的概念 前面的文章中我提到过ECMAScript中没有类的概念(ES6之前) 所以JS中的对象和其他语言中的对象存在着一些区别 ECMA中对对象的定义如下: ...
- Day1:html和css
Day1:html和css 了解浏览器 掌握WEB标准 理解标签语义 掌握常用标签 掌握三种列表标签 前端开发工具: 浏览器是网页显示.运行的平台,IE.火狐(Firefox).谷歌(Chrome). ...
- python Event_loop(事件循环)
由于GIL全局解释器锁的存在,意味着在任何一个时刻,只有一个线程处于执行状态. (1)执行栈: 因为python是单线程的,同一时间只能执行一个方法,所以当一系列的方法被依次调用的时候,python会 ...