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

server|sqlserver|数据

/*****************************************************
 * 文 件 名:DBObject.cs
 * 功能描述:定义数据层基类。
 * 创 建 人:夏春涛 xchuntao@163.com qq:23106676
 * 创建时间:2004-08-11 11:05
 *****************************************************/

using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace XD.XLB.JBC.JBInfo.WebModules.Data
{
 /// <summary>
 /// 数据层基类,提供对底层数据的基本操作
 /// </summary>
 public class DBObject
 {  
  private SqlConnection connection;
  
  #region 构造函数
  /// <summary>
  /// 构造函数,初始化数据连接对象
  /// </summary>
  public DBObject()
  {
   string connectionString = ConfigurationSettings.AppSettings.Get("ConnectionString");//从Web.Config中取得的连接字符串
   connection = new SqlConnection(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 )
  {
   string connectionString = newConnectionString;
   connection = new SqlConnection( connectionString );
  }
  #endregion

  /// <summary>
  /// 数据连接对象(只读)
  /// </summary>  
  public SqlConnection Connection
  {
   get
   {
    return connection;
   }
   set
   {
    connection = value;
   }
  }  

  //-----------------------------------------------------------------------------------------
  //以下是从《ASP.Net Web站点高级编程》中Copy的(夏春涛)------------------------------------
  //-----------------------------------------------------------------------------------------
  /// <summary>
  /// 创建一个SqlCommand对象,用于获取存储过程的返回值
  /// </summary>
  /// <param name="storedProcName">存储过程名称</param>
  /// <param name="parameters">存储过程的参数对象列表(数组)</param>
  /// <returns>SqlCommand对象</returns>
  private SqlCommand BuildIntCommand(string storedProcName, IDataParameter[] parameters)
  {
   SqlCommand command = BuildQueryCommand( storedProcName, parameters );   

   command.Parameters.Add( new SqlParameter ( "ReturnValue",
    SqlDbType.Int,
    4, /* Size */
    ParameterDirection.ReturnValue,
    false, /* is nullable */
    0, /* byte precision */
    0, /* byte scale */
    string.Empty,
    DataRowVersion.Default,
    null ));

   return command;
  }

  /// <summary>
  /// 创建一个SqlCommand对象,用于生成SqlDataReader
  /// </summary>
  /// <param name="storedProcName">存储过程名称</param>
  /// <param name="parameters">存储过程的参数对象列表(数组)</param>
  /// <returns>SqlCommand对象</returns>
  private SqlCommand BuildQueryCommand(string storedProcName, IDataParameter[] parameters)
  {
   SqlCommand command = new SqlCommand( storedProcName, connection );
   command.CommandType = CommandType.StoredProcedure;

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

   return command;

  }

  /// <summary>
  /// 运行存储过程,获取影响数,返回存储过程运行结果
  /// </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();
   SqlCommand command = BuildIntCommand( storedProcName, parameters );
   rowsAffected = command.ExecuteNonQuery();
   result = command.Parameters["ReturnValue"].Value;
   connection.Close();
   return result;
  }

  /// <summary>
  /// 运行存储过程,返回产生的SqlDataReader对象
  /// </summary>
  /// <param name="storedProcName">存储过程名称</param>
  /// <param name="parameters">存储过程的参数对象列表(数组)</param>
  /// <returns>SqlDataReader对象</returns>
  public SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters )
  {
   SqlDataReader returnReader;

   connection.Open();
   SqlCommand command = BuildQueryCommand( storedProcName, parameters );
   command.CommandType = CommandType.StoredProcedure;

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

  /// <summary>
  /// 运行存储过程,创建一个DataSet对象,
  /// 将运行结果存入指定的DataTable中,返回DataSet对象
  /// </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();
   SqlDataAdapter sqlDA = new SqlDataAdapter();
   sqlDA.SelectCommand = BuildQueryCommand( storedProcName, parameters );
   sqlDA.Fill( dataSet, tableName );
   connection.Close();

   return dataSet;
  }

  /// <summary>
  /// 运行存储过程,将运行结果存入已有DataSet对象的指定表中,无返回值
  /// </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();
   SqlDataAdapter sqlDA = new SqlDataAdapter();
   sqlDA.SelectCommand = BuildIntCommand( storedProcName, parameters );
   sqlDA.Fill( dataSet, tableName );
   connection.Close();   
  }

  //-----------------------------------------------------------------------------------------
  //以下是自建的(夏春涛)-------------------------------------------------------------------
  //-----------------------------------------------------------------------------------------
  /// <summary>
  /// 运行与写数据库相关的SQL语句,返回影响行数**********************************************
  /// </summary>  
  /// <param name="sqlString">SQL语句</param>
  /// <returns>影响行数</returns>
  public int ExeNonQuery(string sqlString)
  {
   int RowAffected;
   if(connection.State.ToString() == "Closed")
    connection.Open();
   SqlCommand command = new SqlCommand( sqlString, connection );
   RowAffected = command.ExecuteNonQuery();
   //connection.Close();
 
   return RowAffected;

  }

  /// <summary>
  /// 运行SQL语句,返回SqlDataReader对象
  /// </summary>
  /// <param name="sqlString">SQL语句</param>
  /// <returns>SqlDataReader对象</returns>
  public SqlDataReader ExeSqlString(string sqlString)
  {
   SqlDataReader returnReader;

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

   return returnReader;
  }

  /// <summary>
  /// 运行SQL语句,返回DataSet对象
  /// </summary>
  /// <param name="string">SQL语句</param>
  /// <param name="tableName">数据表名称</param>
  /// <returns>DataSet对象</returns>
  public DataSet ExeSqlString(string sqlString, string tableName )
  {
   DataSet dataSet = new DataSet();
   if (connection.State.ToString() == "Closed")
                connection.Open();
   SqlDataAdapter sqlDA = new SqlDataAdapter();
   sqlDA.SelectCommand = new SqlCommand( sqlString, connection );
   sqlDA.Fill( dataSet, tableName );
   connection.Close();

   return dataSet;
  }

  /// <summary>
  /// 运行SQL语句,将运行结果存入已有DataSet对象的指定表中,无返回值
  /// </summary>  
  /// <param name="sqlString">SQL语句</param>
  /// <param name="dataSet">DataSet对象</param>
  /// <param name="tableName">数据表名称</param>
  public void ExeSqlString(string sqlString, DataSet dataSet, string tableName )
  {
   if (connection.State.ToString() == "Closed")
    connection.Open();
   SqlDataAdapter sqlDA = new SqlDataAdapter();
   sqlDA.SelectCommand = new SqlCommand( sqlString, connection );
   sqlDA.Fill( dataSet, tableName );
   connection.Close();  
  }

  
  /// <summary>
  /// 运行SQL语句,返回查询结果的第一行的第一列,忽略其它行或列
  /// </summary>  
  /// <param name="sqlString">SQL语句</param>
  /// <returns>影响行数</returns>
  public object ExeScalar(string sqlString)
  {
   object returnScalar;
   if (connection.State.ToString() == "Closed")
    connection.Open();
   SqlCommand command = new SqlCommand( sqlString, connection );
   returnScalar = command.ExecuteScalar();
   //connection.Close();
   
   return returnScalar;
  }
  
  ~DBObject()
  {
   if(connection.State.ToString() == "Open")
                connection.Close();
   connection.Dispose();
  }

 }
}

时间: 2024-11-16 11:57:30

基于SQLServer的数据层基类C#源码的相关文章

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

数据 #region usingusing 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>文 件 名</

ASP.NET创建自定义数据控制器基类

无论什么时候,你在写代码时都会发现其实你在一遍又一遍地编写着同样类型的代码,现在是时候停下来考虑一下你是否正在浪费者大量的时间.昨天,我发现在创建一个数据库驱动的ASP.NET MVC应用程序时,我的确处在这样一种情形中.我不得不为应用程序中的每一个数据库表进行标准的操作--显示数据.更新数据.插入数据.删除数据.一遍又一遍地编写完全相同的代码,这种可怕的现象赋予我灵感,让我写下了今天这篇ASP.NET MVC Tip. MVC控制器就是一个类(Visual Basic或C#类).既然是类,就可

java io学习(十三) 数据输入流的认知、源码和示例

DataInputStream(数据输入流)的认知.源码和示例 DataInputStream 介绍 DataInputStream 是数据输入流.它继承于FilterInputStream. DataInputStream 是用来装饰其它输入流,它"允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型".应用程序可以使用DataOutputStream(数据输出流)写入由DataInputStream(数据输入流)读取的数据. DataInputStream 函数列

java io系列15之 DataOutputStream(数据输出流)的认知、源码和示例

本章介绍DataOutputStream.我们先对DataOutputStream有个大致认识,然后再深入学习它的源码,最后通过示例加深对它的了解. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_15.html DataOutputStream 介绍 DataOutputStream 是数据输出流.它继承于FilterOutputStream.DataOutputStream 是用来装饰其它输出流,将DataOutputStream和DataI

基于android的无线视频监控,使用源码可是在pc端显示不了

问题描述 基于android的无线视频监控,使用源码可是在pc端显示不了 http://www.cnblogs.com/feifei1010/archive/2012/08/31/2664939.html在这里可以下载到源码这个是pc端开启服务器这个是android上运行不管是我输入0.0.0.0 还是127.0.0.1 我在pc端的程序看不到视频接入 请大神给予指导 谢谢了 解决方案 http://wenku.baidu.com/link?url=QOLtRQ2FoJRl80QAKsz8OaU

c++ directx-求 基于c++的DirectX 11 3D 综合实例 源码

问题描述 求 基于c++的DirectX 11 3D 综合实例 源码 如图,包含天空盒,四种光照,线框模式开关,雾化,镜面,反射,法线映射,着色体,曲面细分. 不是全都有也可以,最起码有五个. 急求,三天内急求,急急急,谢谢了 解决方案 可以尝试和这位博主交流:http://blog.csdn.net/xoyojank/article/category/337624/2 解决方案二: http://download.csdn.net/album/detail/885 解决方案三: [Direct

基于JavaScript实现添加到购物车效果附源码下载_javascript技巧

我们有很多种方法实现将商品添加到购物车,通常的做法是点击"添加到购物车"按钮,会跳转到购物车,在购物车里可以点击"结算"按钮进行结算.而今天我给大家介绍一个更友好的解决方案. 查看演示 下载源码 默认情况下,购物车是隐藏不可见的,当用户点击添加到购物车按钮后,商品信息会添加到购物车,购物车会以按钮的形式出现在页面右下角,点击按钮则会展开购物车,显示购物车中的商品信息,同时也可以对购物车中的商品进行删除或者结算等操作.用户也可以暂时关闭购物车继续购物. HTML结构

base64-网页显示了数据,抓取网页源码无法找到数据

问题描述 网页显示了数据,抓取网页源码无法找到数据 用java抓取某个网站登录后的数据,登录成功,但是貌似遇到数据加密,table里面的数据都是由js生成,而且我有看到有引用base64.js和rsa.js,研究了几天还是没办法抓取到数据,前辈们能不能给个指导路线,网址是http://dev.10086.cn/datau/modules/views/dataana.jsp 解决方案 fiddler先抓包,然后分析浏览器请求的参数和地址,在你的程序中照着做.

求C#在winform界面下读写EXCEL数据以及读写文本文件的源码和示例

问题描述 求C#在winform界面下读写EXCEL数据以及读写文本文件的源码和示例 解决方案 解决方案二:你先看看这个http://blog.csdn.net/duanzi_peng/article/details/17414629解决方案三:百度上就能搜到解决方案四:1:http://blog.csdn.net/pan_junbiao/article/details/397174432:File.ReadAllLines或者使用StreamReader这种例子网上一搜一吨多.解决方案五:读写