基于ODP的数据层基类C#源码

简介: #region using using System; using System.Configuration; using System.Data; using Oracle.DataAccess.


#region using
using System;
using System.Configuration;
using System.Data;
using Oracle.DataAccess.Client;
#endregion

namespace WIS.Base.Data
{
 /// <summary>
 /// <table style="font-size:12px">
 /// <tr><td><b>文 件 名</b>:DbObject.cs</td></tr>
 /// <tr><td><b>功能描述</b>:数据层基类,提供对底层数据的基本操作</td></tr>
 /// <tr><td><b>创 建 人</b>:夏春涛
xchuntao@163.com qq:23106676</td></tr>
 /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
 /// </table>
 /// </summary>

 public class DbObject
 {
  #region 成员变量
  /// <summary>
  /// <table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:Oracle数据连接对象</td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table>
  /// </summary>
  protected OracleConnection Connection;

  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:数据连接字符串</td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>
  private string connectionString;
  #endregion

  #region 构造函数
  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:构造函数,使用配置文件中的默认数据连接字符串ConnectionString,初始化数据连接对象 </td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>

  public DbObject()
  {
   connectionString = ConfigurationSettings.AppSettings.Get("ConnectionString");//从Web.Config中取得的连接字符串
   Connection = new OracleConnection(connectionString);
  }
  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:构造函数,根据指定的数据连接字符串,初始化数据连接对象</td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>
  /// <param name="newConnectionString">数据连接字符串</param>

  public DbObject( string newConnectionString )
  {
   connectionString = newConnectionString;
   Connection = new OracleConnection( connectionString );
  }
  #endregion

  #region 私有方法

  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:创建一个OracleCommand对象,用于生成OracleDataReader </td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>
  /// <param name="storedProcName">存储过程名称</param>
  /// <param name="parameters">存储过程的参数对象列表(数组)</param>
  /// <returns>OracleCommand对象</returns>

  private OracleCommand BuildCommand(string storedProcName, IDataParameter[] parameters)
  {
   OracleCommand command = new OracleCommand( storedProcName, Connection );
   command.CommandType = CommandType.StoredProcedure;

   foreach (OracleParameter parameter in parameters)
   {
    command.Parameters.Add( parameter );
   }

   return command;

  }
  #endregion

  #region 运行存储过程
  /// <summary>
  /// <table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:运行存储过程,获取影响行数,返回存储过程运行结果 </td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table>
  /// </summary>
  /// <param name="storedProcName">存储过程名称</param>
  /// <param name="parameters">存储过程的参数对象列表(数组)</param>
  /// <param name="rowsAffected">出参:执行存储过程所影响的记录行数</param>
  /// <returns>存储过程的运行结果</returns>

  public object RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected )
  {
   object result;

   //if(Connection.State.ToString() == "Closed") Connection.Open();
   Connection.Open();
   OracleCommand command = BuildCommand( storedProcName, parameters );
   rowsAffected = command.ExecuteNonQuery();
   //如果有"ReturnValue"参数则返回值,否则返回null
   bool blnHasReturn = false;
   for (int i=0;i<parameters.Length;i++)
   {
    if (parameters[i].Direction == ParameterDirection.ReturnValue)
    {
     blnHasReturn = true;
     break;
    }
   }
   if (blnHasReturn)
    result = command.Parameters["ReturnValue"].Value;
   else
    result = null;

   Connection.Close();
   return result;
  }

  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:运行存储过程,返回产生的OracleDataReader对象 </td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>
  /// <param name="storedProcName">存储过程名称</param>
  /// <param name="parameters">存储过程的参数对象列表(数组)</param>
  /// <returns>OracleDataReader对象</returns>

  public OracleDataReader RunProcedure(string storedProcName, IDataParameter[] parameters )
  {
   OracleDataReader returnReader;

   Connection.Open();
   OracleCommand command = BuildCommand( storedProcName, parameters );
   command.CommandType = CommandType.StoredProcedure;

   returnReader = command.ExecuteReader();
   //connection.Close();
   return returnReader;
  }

  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:运行存储过程,创建一个DataSet对象,
  /// 将运行结果存入指定的DataTable中,返回DataSet对象 </td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>
  /// <param name="storedProcName">存储过程名称</param>
  /// <param name="parameters">存储过程的参数对象列表(数组)</param>
  /// <param name="tableName">数据表名称</param>
  /// <returns>DataSet对象</returns>

  public DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName )
  {
   DataSet dataSet = new DataSet();
   Connection.Open();
   OracleDataAdapter sqlDA = new OracleDataAdapter();
   sqlDA.SelectCommand = BuildCommand( storedProcName, parameters );
   sqlDA.Fill( dataSet, tableName );
   Connection.Close();

   return dataSet;
  }

  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:运行存储过程,将运行结果存入已有DataSet对象的指定表中,无返回值 </td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>  
  /// <param name="storedProcName">存储过程名称</param>
  /// <param name="parameters">存储过程的参数对象列表(数组)</param>
  /// <param name="dataSet">DataSet对象</param>
  /// <param name="tableName">数据表名称</param>

  public void RunProcedure(string storedProcName, IDataParameter[] parameters, DataSet dataSet, string tableName )
  {
   Connection.Open();
   OracleDataAdapter sqlDA = new OracleDataAdapter();
   sqlDA.SelectCommand = BuildCommand( storedProcName, parameters );
   sqlDA.Fill( dataSet, tableName );
   Connection.Close();   
  }
  #endregion

  #region 运行SQL语句
  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:运行与写数据库相关的SQL语句,返回影响行数 </td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>  
  /// <param name="sqlString">SQL语句</param>
  /// <returns>影响行数</returns>

  public int ExecNonQuery(string sqlString)
  {
   int RowAffected;
   //if(Connection.State.ToString() == "Closed") Connection.Open();
   Connection.Open();
   OracleCommand command = new OracleCommand( sqlString, Connection );
   RowAffected = command.ExecuteNonQuery();
   Connection.Close();
 
   return RowAffected;

  }

  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:运行SQL语句,返回OracleDataReader对象 </td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>
  /// <param name="sqlString">SQL语句</param>
  /// <returns>SqlDataReader对象</returns>

  public OracleDataReader ExecSqlString(string sqlString)
  {
   OracleDataReader returnReader;

   //if(Connection.State.ToString() == "Closed") Connection.Open();
   Connection.Open();
   OracleCommand command = new OracleCommand( sqlString, Connection );
   returnReader = command.ExecuteReader();
   //connection.Close();

   return returnReader;
  }

  
  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:运行SQL语句,返回DataSet对象 </td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>
  /// <param name="string">SQL语句</param>
  /// <param name="tableName">数据表名称</param>
  /// <returns>DataSet对象</returns>

  public DataSet ExecSqlString(string sqlString, string tableName )
  {
   DataSet dataSet = new DataSet();
   //if (Connection.State.ToString() == "Closed") Connection.Open();
   Connection.Open();
   OracleDataAdapter sqlDA = new OracleDataAdapter();
   sqlDA.SelectCommand = new OracleCommand( sqlString, Connection );
   sqlDA.Fill( dataSet, tableName );
   Connection.Close();

   return dataSet;
  }

  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:运行SQL语句,将运行结果存入已有DataSet对象的指定表中,无返回值 </td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>  
  /// <param name="sqlString">SQL语句</param>
  /// <param name="dataSet">DataSet对象</param>
  /// <param name="tableName">数据表名称</param>

  public void ExecSqlString(string sqlString, DataSet dataSet, string tableName )
  {
   //if (Connection.State.ToString() == "Closed") Connection.Open();
   Connection.Open();
   OracleDataAdapter sqlDA = new OracleDataAdapter();
   sqlDA.SelectCommand = new OracleCommand( sqlString, Connection );
   sqlDA.Fill( dataSet, tableName );
   Connection.Close();  
  }

  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:运行SQL语句,返回查询结果的第一行的第一列,忽略其它行或列 </td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>  
  /// <param name="sqlString">SQL语句</param>
  /// <returns>影响行数</returns>

  public object ExecScalar(string sqlString)
  {
   object returnScalar;
   //if (Connection.State.ToString() == "Closed") Connection.Open();
   Connection.Open();
   OracleCommand command = new OracleCommand( sqlString, Connection );
   returnScalar = command.ExecuteScalar();
   //Connection.Close();
   
   return returnScalar;
  }
  #endregion

  #region 关闭数据连接
  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:关闭数据连接 </td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>

  public void Close()
  {
   if(Connection.State.ToString() == "Open")
    Connection.Close();
  }
  #endregion

  #region 析构函数
  /// <summary><table style="font-size:12px">
  /// <tr><td><b>功能描述</b>:析构函数,善后处理,释放数据连接 </td></tr>
  /// <tr><td><b>创 建 人</b>:夏春涛 </td></tr>
  /// <tr><td><b>创建时间</b>:2005-05-28 </td></tr>
  /// </table></summary>

  ~DbObject()
  {
   if(Connection.State.ToString() == "Open")
    Connection.Close();
   Connection.Dispose();
  }
  #endregion
  

 }
}

目录
相关文章
|
7月前
|
开发框架 前端开发 JavaScript
C# 6.0+JavaScript云LIS系统源码  云LIS实验室信息管理新型解决方案
云LIS是为区域医疗提供临床实验室信息服务的计算机应用程序,可协助区域内所有临床实验室相互协调并完成日常检验工作,对区域内的检验数据进行集中管理和共享,通过对质量控制的管理,最终实现区域内检验结果互认。其目标是以医疗服务机构为主体,以医疗资源和检验信息共享为目标,集成共性技术及医疗服务关键技术,建立区域协同检验,最大化利用有限的医疗卫生资源。
179 1
|
5月前
|
存储 Oracle 关系型数据库
PACS源码,C#语言数字医学影像系统成品源码
**数字医学影像系统(RIS/PACS)**采用C#开发,基于C/S架构,配Oracle数据库,具备自主版权,适用于项目实施。系统包含分诊、超声、放射、内镜、病理等工作站,支持基本信息维护、报表查询和系统维护。功能亮点有:WorkList管理、影像采集传输、存储检索、图像处理、多序列浏览、流程控制、报告录入与审核、支持多种影像设备及高级影像处理。RIS与PACS数据库同步,并集成HIS、电子病历等系统接口。全面遵循DICOM3.0标准。
102 1
PACS源码,C#语言数字医学影像系统成品源码
|
5月前
|
BI 数据处理
一体化的医学实验室信息系统源码,C#LIS系统源码
面向医学实验室的一体化平台提供标本流程管理、报告发布及科室管理支持。它与HIS无缝对接,简化患者信息录入,实现检验结果实时同步。系统自动处理数据、分类样本、计算参考范围,并对异常结果预警。条码管理简化样本追踪,质控管理提升检测准确性。平台还支持数据审核发布、历史结果查询对比、灵活报表打印及统计分析等功能,辅助科室管理和试剂库存控制,加强科室间沟通协作。
一体化的医学实验室信息系统源码,C#LIS系统源码
|
6月前
|
开发框架 前端开发 .NET
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
集成于VS 2019,EXT.NET前端和ASP.NET后端,搭配MSSQL 2018数据库。系统覆盖样品管理、数据分析、报表和项目管理等实验室全流程。应用广泛,包括生产质检(如石化、制药)、环保监测、试验研究等领域。随着技术发展,现代LIMS还融合了临床、电子实验室笔记本和SaaS等功能,以满足复杂多样的实验室管理需求。
85 3
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
|
5月前
|
数据采集 监控 BI
C#实验室检验LIS信息系统源码 微生物检验、质控维护
LIS系统的主要目标是为检验室开展检验工作提供更加有效的系统支持。该系统将尽量减少以人工操作的方式来实现信息转移,减少在接收检验项目、报告结果和保存记录等工作中可能会出现的人为误差,为检验结果查询提供更有效的方法,节省了管理信息所需的琐碎时间和精力。为实验室技术人员提供智能化的运行模式,使处理诸如按照规程审核检验结果、取消检验项目、分析、处理存在重大疑问的检验结果、执行特殊的命令和处理质量控制等问题更轻松自如,这将使检验人员更快地获得准确清晰的检验结果。为临床医护人员提供在线设施,使他们可以及时准确地获得相关实验室信息。确保检验结果的可靠性和准确性,利用实验室管理信息系统的仪器监控和质量控制,
58 0
|
7月前
|
存储 运维 BI
基于C#-VC-MSSQL开发的全套PACS系统源码 3D PACS系统源码:可实现医学影像获取、存档、观片、处理、打印多项应用
PACS的功能价值在于通过连接不同的影像设备,存储与管理图像,图像的调用与后处理,实现资源共享,降低成本,达到提高工作效率、提升医疗水平的目地;
102 1
基于C#-VC-MSSQL开发的全套PACS系统源码  3D PACS系统源码:可实现医学影像获取、存档、观片、处理、打印多项应用
|
6月前
|
监控 C#
技术经验解读:【转】c#实现魔兽(warIII)中显血和改键功能(附源码)(不影响聊天打字)
技术经验解读:【转】c#实现魔兽(warIII)中显血和改键功能(附源码)(不影响聊天打字)
109 0
|
7月前
|
存储 安全 Oracle
C#检验科lis实验室信息管理系统源码
LIS是全院信息化建设的一个重要组成部分,其主要功能是将检验的实验仪器传出的检验数据经分析后,生成检验报告,通过网络存储在数据库中,使医生能够方便、及时的看到患者的检验结果,LIS已经成为现代化医院管理中必不可少的一部分。有助于提高实验室的整体管理水平,减少漏洞,提高检验质量。
48 1
|
7月前
|
存储 开发框架 前端开发
C#开发的全套成熟的LIS系统源码JavaScript+SQLserver 2012区域云LIS系统源码
医院云LIS系统是一套成熟的实验室信息管理系统,目前已在多家三级级医院应用,并不断更新。云LIS系统是为病人为中心、以业务处理为基础、以提高检验科室管理水平和工作效率为目标,将医学检验、科室管理和财务统计等检验科室/实验室所有工作进行整合,全面改善检验科室/实验室的工作现状。
64 0
|
7月前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
74 0