一个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第一版)

/// ///模块编号:1001 ///作用:数据库访问通用类 ///作者:邓政军 ///编写日期:2011-11-30 /// using System; using System.Collect...
  • hi_dzj
  • hi_dzj
  • 2011-11-30 08:46
  • 2209

利用ADO.NET的体系架构打造通用的数据库访问通用类 .

说明在之前周公曾写过针对不同数据库的数据库访问通用类,如针对SQLite的、针对Access的、针对Oracle的、针对SQL Server的。总结了这些通用类的通用方法,其实无非就是针对不同类型的数...

利用ADO.NET的体系架构打造通用的数据库访问通用类

说明 在之前周公曾写过针对不同数据库的数据库访问通用类,如针对SQLite的、针对Access的、针对Oracle的、针对SQL Server的。总结了这些通用类的通用方法,其实无非就是针对不同类型...

利用ADO.NET的体系架构打造通用的数据库访问通用类

转载:http://blog.csdn.net/zhoufoxcn/article/details/6630524 周公 原来写过一个sqlHelper1.0,只是针对sqlServ...

利用ADO.NET的体系架构打造通用的数据库访问通用类

在周公的博客上看到了他写的这篇博文,忍不住转载过来了。 说明 在之前周公曾写过针对不同数据库的数据库访问通用类,如针对SQLite的、针对Access的、针对Oracle的、针对SQL Serve...

利用ADO.NET的体系架构打造通用的数据库访问通用类 .

说明 在之前周公曾写过针对不同数据库的数据库访问通用类,如针对SQLite的、针对Access的、针对Oracle的、针对SQL Server的。总结了这些通用类的通用方法,其实无非就是针对不同类型...

利用ADO.NET的体系架构打造通用的数据库访问通用类

针对不同数据库的数据库访问通用类,如针对SQLite的、针对Access的、针对Oracle的、针对SQL Server的。

利用ADO.NET的体系架构打造通用的数据库访问通用类

说明 在之前周公曾写过针对不同数据库的数据库访问通用类,如针对SQLite的、针对Access的、针对Oracle的、针对SQL Server的。总结了这些通用类的通用方法,其实无非就是针对不同类型...

ADO.NET-如何选择一个合适的Data Provider

.NET Framework Data Provider 用于连接到数据库、执行命令和检索结果。常用的Data Provider有6种,那么如何选择呢?
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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