基于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
  

 }
}

目录
相关文章
|
17天前
|
开发框架 前端开发 JavaScript
C# 6.0+JavaScript云LIS系统源码  云LIS实验室信息管理新型解决方案
云LIS是为区域医疗提供临床实验室信息服务的计算机应用程序,可协助区域内所有临床实验室相互协调并完成日常检验工作,对区域内的检验数据进行集中管理和共享,通过对质量控制的管理,最终实现区域内检验结果互认。其目标是以医疗服务机构为主体,以医疗资源和检验信息共享为目标,集成共性技术及医疗服务关键技术,建立区域协同检验,最大化利用有限的医疗卫生资源。
26 1
|
28天前
|
数据采集 安全 JavaScript
C#医院手术麻醉信息管理系统源码 对接院内HIS、LIS、PACS
手麻系统的功能涵盖了麻醉临床业务管理、麻醉运营业务管理以及手术进程管理等,实现了将多种麻醉病历文书与医院HIS系统的有效关联,让手术室人员、设备资源和信息资源高度共享;实现了手术安排、各种统计报表等科室管理和科研工作的需求,可借其收集临床数据、进行整合分析,为围术期临床信息、管理、科研提供整体解决方案;该系统的运行,为医护人员提供了流程化、信息化、自动化、智能化的临床业务综合管理。
32 5
|
1月前
|
前端开发 Java C#
java/C#语言开发的医疗信息系统11套源码
java/C#语言开发的医疗信息系统11套源码
22 1
|
1月前
|
安全 测试技术 C#
C#.手术麻醉系统源码 手麻系统如何与医院信息系统进行集成?
C#手术麻醉系统源码集成到医院信息系统涉及标准数据接口、患者信息同步、医嘱报告共享、实时监测数据传输及安全权限管理。通过这些步骤,确保信息的准确、及时和安全流动,提升医疗效率和服务质量。系统集成后需测试优化,以保证稳定性。图片展示了集成的不同方面。
13 0
|
1月前
|
传感器 数据采集 大数据
C#/BS手麻系统源码 手术麻醉管理系统源码 商业项目源码
手麻系统从麻醉医生实际工作环境和流程需求方面设计,与HIS,LIS,PACS,EMR无缝连接,方便查看患者的信息;实现术前、术中、术后手术麻醉信息全记录;减少麻醉医师在手术中填写麻醉记录单时间,证手术麻醉相关信息的准确性,有效降低医护人员的术中书写医疗文书的压力,使得麻醉医生在术中能够更加集中精力在病人的麻醉操作上,提升手术质量
19 2
|
13天前
|
存储 数据采集 安全
C#医院手术室麻醉信息管理系统源码 自动生成麻醉的各种医疗文书(手术风险评估表、手术安全核查表)
医院手术麻醉信息系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流程,实现麻醉手术过程的信息数字化,自动生成麻醉的各种医疗文书,完成共享HIS、LIS、PACS和EMR等手术患者信息,从而提高麻醉、手术工作的管理水平。
24 3
|
16天前
|
存储 开发框架 前端开发
C#开发的全套成熟的LIS系统源码JavaScript+SQLserver 2012区域云LIS系统源码
医院云LIS系统是一套成熟的实验室信息管理系统,目前已在多家三级级医院应用,并不断更新。云LIS系统是为病人为中心、以业务处理为基础、以提高检验科室管理水平和工作效率为目标,将医学检验、科室管理和财务统计等检验科室/实验室所有工作进行整合,全面改善检验科室/实验室的工作现状。
18 0
|
21天前
|
存储 安全 Oracle
C#检验科lis实验室信息管理系统源码
LIS是全院信息化建设的一个重要组成部分,其主要功能是将检验的实验仪器传出的检验数据经分析后,生成检验报告,通过网络存储在数据库中,使医生能够方便、及时的看到患者的检验结果,LIS已经成为现代化医院管理中必不可少的一部分。有助于提高实验室的整体管理水平,减少漏洞,提高检验质量。
23 1
|
25天前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
22 0
|
1月前
|
C#
C#掌上医院预约挂号支付系统源码
医院微信预约挂号系统是一种基于微信平台的医疗服务系统,它利用微信的广泛覆盖和便捷性,为患者提供线上预约挂号的服务。通过该系统,患者可以使用自己的微信账号登录,浏览医院的医生排班信息,选择合适的医生和就诊时间进行预约。 医院微信预约挂号系统主要是让自费、医保患者在手机上就能实现就医全过程,实时自费、医保结算,同时还可以查询检查检验报告等就诊信息。
17 3