一个ado.net访问类

转载 2006年05月17日 17:11:00

public class Database : IDisposable {
    private SqlConnection con;  // 连接数据源
  /// <summary>
  /// 执行存储过程
  /// </summary>
  /// <param name="procName">存储过程的名称</param>
  /// <returns>返回存储过程返回值</returns>
  public int RunProc(string procName)

{
   SqlCommand cmd = CreateCommand(procName, null);
   cmd.ExecuteNonQuery();
   this.Close();
   return (int)cmd.Parameters["ReturnValue"].Value;
  }
  /// <summary>
  /// 执行存储过程
  /// </summary>
  /// <param name="procName">存储过程名称</param>
  /// <param name="prams">存储过程所需参数</param>
  /// <returns>返回存储过程返回值</returns>
  public int RunProc(string procName, SqlParameter[] prams)

{
   SqlCommand cmd = CreateCommand(procName, prams);
   cmd.ExecuteNonQuery();
   this.Close();
   return (int)cmd.Parameters["ReturnValue"].Value;
  }
  /// <summary>
  /// 执行存储过程
  /// </summary>
  /// <param name="procName">存储过程的名称</param>
  /// <param name="dataReader">返回存储过程返回值</param>
  public void RunProc(string procName, out SqlDataReader dataReader) {
   SqlCommand cmd = CreateCommand(procName, null);
   dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
   //return (int)cmd.Parameters["ReturnValue"].Value;
  }
  /// <summary>
  /// 执行存储过程
  /// </summary>
  /// <param name="procName">存储过程的名称</param>
  /// <param name="prams">存储过程所需参数</param>
  /// <param name="dataReader">存储过程所需参数</param>
  public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)

{
   SqlCommand cmd = CreateCommand(procName, prams);
   dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
   //return (int)cmd.Parameters["ReturnValue"].Value;
  }
  /// <summary>
  /// 创建一个SqlCommand对象以此来执行存储过程
  /// </summary>
  /// <param name="procName">存储过程的名称</param>
  /// <param name="prams">存储过程所需参数</param>
  /// <returns>返回SqlCommand对象</returns>
  private SqlCommand CreateCommand(string procName, SqlParameter[] prams) 
  {
   // 确认打开连接
   Open();
   SqlCommand cmd = new SqlCommand(procName, con);
   cmd.CommandType = CommandType.StoredProcedure;
   // 依次把参数传入存储过程
   if (prams != null)
            {
    foreach (SqlParameter parameter in prams)
     cmd.Parameters.Add(parameter);
   }
   // 加入返回参数
   cmd.Parameters.Add(
    new SqlParameter("ReturnValue", SqlDbType.Int, 4,
    ParameterDirection.ReturnValue, false, 0, 0,
    string.Empty, DataRowVersion.Default, null));
   return cmd;
  }
  /// <summary>
  /// 打开数据库连接.
  /// </summary>
  private void Open()
        {
   // 打开数据库连接
   if (con == null)
            {
    con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);    
   }    
   if(con.State ==System.Data.ConnectionState.Closed)
    con.Open();
  }
  /// <summary>
  /// 关闭数据库连接
  /// </summary>
  public void Close()
        {
   if (con != null)
    con.Close();
  }
  /// <summary>
  /// 释放资源
  /// </summary>
  public void Dispose()
        {
   // 确认连接是否已经关闭
   if (con != null)
            {
              con.Dispose();
              con = null;
       }    
  }
  /// <summary>
  /// 传入输入参数
  /// </summary>
  /// <param name="ParamName">存储过程名称</param>
  /// <param name="DbType">参数类型</param></param>
  /// <param name="Size">参数大小</param>
  /// <param name="Value">参数值</param>
  /// <returns>新的 parameter 对象</returns>
  public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
        {
   return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
  }
  /// <summary>
  /// 传入返回值参数
  /// </summary>
  /// <param name="ParamName">存储过程名称</param>
  /// <param name="DbType">参数类型</param>
  /// <param name="Size">参数大小</param>
  /// <returns>新的 parameter 对象</returns>
  public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size)
        {
   return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
  }
  /// <summary>
  /// 传入返回值参数
  /// </summary>
  /// <param name="ParamName">存储过程名称</param>
  /// <param name="DbType">参数类型</param>
  /// <param name="Size">参数大小</param>
  /// <returns>新的 parameter 对象</returns>
  public SqlParameter MakeReturnParam(string ParamName, SqlDbType DbType, int Size)
  {
   return MakeParam(ParamName, DbType, Size, ParameterDirection.ReturnValue, null);
  }
  /// <summary>
  /// 生成存储过程参数
  /// </summary>
  /// <param name="ParamName">存储过程名称</param>
  /// <param name="DbType">参数类型</param>
  /// <param name="Size">参数大小</param>
  /// <param name="Direction">参数方向</param>
  /// <param name="Value">参数值</param>
  /// <returns>新的 parameter 对象</returns>
  public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value) 

{
   SqlParameter param;
   if(Size > 0)
    param = new SqlParameter(ParamName, DbType, Size);
   else
    param = new SqlParameter(ParamName, DbType);
            param.Direction = Direction;
   if (!(Direction == ParameterDirection.Output && Value == null))
    param.Value = Value;
            return param;
  }

ADO.NET操作数据库(二)

核心内容:SqlHelper的封装、配置文件的使用、事件监视器、ado.net数据库连接池、可变参数、异常捕获、SQL漏洞注释攻击、使用带参数的sql语句、本文中出现的类的用法。 一:关于SqlHel...
  • chenrushui
  • chenrushui
  • 2016年10月30日 18:31
  • 1216

ado.net连接数据库的用法

一、简单介绍ADO.NET System.Data:DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint System.Data...
  • tianfeng1208
  • tianfeng1208
  • 2014年08月17日 17:27
  • 1095

C# ADO.NET的五个常用对象及数据库连接操作

C#中和数据库连接的操作时开发中必不可少的,而ADO.NET就是其中的关键技术之一。常见的ADO.NET有五个常用的对象: SqlConnection 数据库连接对象 SqlCommand 数据...
  • ZorroBubble
  • ZorroBubble
  • 2013年06月13日 09:56
  • 2621

ADO 与ADO.NET两种数据访问方式区别。

1. ADO与ADO.NET简介   ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用、高速度、低内存支出和占用磁盘空间较少,支持用...
  • lvjin110
  • lvjin110
  • 2013年09月06日 11:11
  • 1466

两种数据访问方式:从ADO 到ADO.NET

电脑最大的好处就是可以帮助人处理大量数据,由此离不开对数据库的访问,先看看最近在做ASP.NET例子的时候经常用到的ADO.NET的数据库访问方式。...
  • u010927640
  • u010927640
  • 2016年03月13日 17:17
  • 3163

ADO.NET 封装的数据库帮助类

C# ADO.NET封装的数据库帮助类
  • Dandelion_drq
  • Dandelion_drq
  • 2017年03月29日 23:34
  • 389

asp.net学习总结——ADO.net(对Sql Server进行操作的数据访问类)

ADO.net(对Sql Server进行操作的数据访问类)
  • sun15732621550
  • sun15732621550
  • 2016年06月11日 21:40
  • 1037

ADO.NET操作数据库(四)

主要内容: 连接查询、左表、右表、内连接、外连接、笛卡尔积、on子句数据筛选、自连接、存储过程、连接查询、模糊查询、视图、T-SQL编程、全局变量、局部变量、事务、系统存储过程、用户自定义存储过程、a...
  • chenrushui
  • chenrushui
  • 2016年11月09日 19:45
  • 1625

ADO.net数据库访问类

上篇博客我写了ADO,ODBC和OLEDB这三种数据库访问接口,在VS2012中使用时的区别,不同的访问接口有不同的数据库访问类库。这篇博客以ADO.net为例讲解。 先看一张图片:         ...
  • zhaohuanhuanjiuqi
  • zhaohuanhuanjiuqi
  • 2013年12月26日 20:06
  • 908

C++ 通过ADO.Net实现与MySql数据库连接 入门教程

C++ 通过ADO.Net实现与MySql数据库连接 入门教程前言
  • u013978977
  • u013978977
  • 2016年07月15日 17:15
  • 588
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个ado.net访问类
举报原因:
原因补充:

(最多只允许输入30个字)