标题:请高手为C#写的数据库访问类(只针对SQLSERVER)加以详细的注释,拜托了
只看楼主
ilovetea
Rank: 1
来 自:辽宁省锦州市
等 级:新手上路
帖 子:177
专家分:4
注 册:2008-3-31
结帖率:100%
 问题点数:0 回复次数:6 
请高手为C#写的数据库访问类(只针对SQLSERVER)加以详细的注释,拜托了
这是一个C#写的数据库访问类(只针对SQLSERVER)

我从网络上找到的,没能都读明白

尤其是作者的编写想法
如果您有时间请帮忙加以详细解释,代码不短,请帮帮忙

如果您忙,您就主要说说作者的编写想法,我感到很混乱

using System;
using
using System.Collections;
using System.Diagnostics;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

 

namespace
{
 /// <summary>
 /// Database 的摘要说明。
 /// </summary>
 public class Database : IDisposable
 {
  // 连接数据源
  private SqlConnection con;

        public Database()
        { }
  /// <summary>
  /// 执行存储过程
  /// </summary>
  /// <param name="procName">存储过程的名称</param>
  /// <returns>返回存储过程返回值</returns>
  public int RunProc(string procName)
  {
            //SqlTransaction tran;
   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="prams">存储过程所需参数</param>
  /// <returns>返回存储过程返回值</returns>
  public string RunStrProc(string procName, SqlParameter[] prams)
  {
   SqlCommand cmd = CreatestrCommand(procName, prams);
   cmd.ExecuteNonQuery();
   this.Close();
            return cmd.Parameters["ReturnValue"].Value.ToString();
  }
  /// <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.);
  }

  /// <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.);
   //return (int)cmd.Parameters["ReturnValue"].Value;
  }

        /// <summary>
        /// 执行存储过程
        /// </summary>
        /// <param name="procName">存储过程的名称</param>
        /// <param name="prams">存储过程所需参数</param>
        /// <param name="ds">存储过程所需参数</param>
        public void RunProc(string procName, ref DataSet ds)
        {
            SqlCommand cmd = CreateCommand(procName,null);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            sda.Fill(ds);
            this.Close();
        }

        /// <summary>
        /// 执行存储过程
        /// </summary>
        /// <param name="procName">存储过程的名称</param>
        /// <param name="prams">存储过程所需参数</param>
        /// <param name="ds">存储过程所需参数</param>
        /// <param name="ds">存储过程所需参数</param>
        public void RunProc(string procName, ref DataSet ds,string tablename)
        {
            SqlCommand cmd = CreateCommand(procName, null);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            sda.Fill(ds,tablename);
            this.Close();
        }

        /// <summary>
        /// 执行存储过程
        /// </summary>
        /// <param name="procName">存储过程的名称</param>
        /// <param name="prams">存储过程所需参数</param>
        /// <param name="ds">存储过程所需参数</param>
        public void RunProc(string procName, SqlParameter[] prams, ref DataSet ds)
        {
            SqlCommand cmd = CreateCommand(procName, prams);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            sda.Fill(ds);
            this.Close();

        }

        /// <summary>
        /// 执行存储过程
        /// </summary>
        /// <param name="procName">存储过程的名称</param>
        /// <param name="prams">存储过程所需参数</param>
        /// <param name="ds">存储过程所需参数</param>
        /// <param name="ds">存储过程所需参数</param>
        public void RunProc(string procName, SqlParameter[] prams, ref DataSet ds,string tablename)
        {
            SqlCommand cmd = CreateCommand(procName, prams);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            sda.Fill(ds,tablename);
            this.Close();

        }


  /// <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);
    = 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;
  }
  private SqlCommand CreatestrCommand(string procName, SqlParameter[] prams)
  {
   // 确认打开连接
   Open();

   
   SqlCommand cmd = new SqlCommand(procName, con);
    = CommandType.StoredProcedure;

   // 依次把参数传入存储过程
   if (prams != null)
   {
    foreach (SqlParameter parameter in prams)
     cmd.Parameters.Add(parameter);
   }
   
   // 加入返回参数
   cmd.Parameters.Add(
    new SqlParameter("ReturnValue",SqlDbType.VarChar, 50,
    ParameterDirection.ReturnValue,false, 0, 0,
    string.Empty, DataRowVersion.Default,DBNull.Value));

   return cmd;
  }
  /// <summary>
  /// 打开数据库连接.
  /// </summary>
  private void Open()
  {
   // 打开数据库连接
   if (con == null)
   {
                con = new SqlConnection(ConfigurationManager.ConnectionStrings["MIConnectionString"].ToString());
               
   }   
   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, int 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))
                param.Value = Value;

   return param;
            
  }
 }
}

[[it] 本帖最后由 ilovetea 于 2008-11-2 21:36 编辑 [/it]]
搜索更多相关主题的帖子: 数据库 SQLSERVER 注释 访问 
2008-11-02 21:27
ilovetea
Rank: 1
来 自:辽宁省锦州市
等 级:新手上路
帖 子:177
专家分:4
注 册:2008-3-31
得分:0 
自己顶一下,别让它沉下去

我是爱喝茶的胖子,有空一起喝茶啊
我的百度博客:http://hi.baidu.com/33806380
2008-11-02 21:38
小仙
Rank: 7Rank: 7Rank: 7
来 自:光之谷
等 级:贵宾
威 望:39
帖 子:1812
专家分:1
注 册:2008-8-8
得分:0 
写的很不错,不过我明天传上来是带注释和讲解的,比较好理解和掌握一点。存储过程的方法有很多种写法,个人有个人的习惯,你觉得那种适合自己,就用哪种,写法不一样,道理都是一样的。


仁者乐膳,智者乐睡。我都爱~
2008-11-02 21:40
ilovetea
Rank: 1
来 自:辽宁省锦州市
等 级:新手上路
帖 子:177
专家分:4
注 册:2008-3-31
得分:0 
对啊,我就需要注释和讲解啊,呵呵,看的我脑袋乱乱的,不想了,明天见

我是爱喝茶的胖子,有空一起喝茶啊
我的百度博客:http://hi.baidu.com/33806380
2008-11-02 21:54
cfans1314
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2008-10-20
得分:0 
期待中!
我也想看看作者是怎么实现的!
2008-11-03 06:53
tokoyoshi
Rank: 2
等 级:论坛游民
帖 子:99
专家分:67
注 册:2009-10-24
得分:0 
多读一下就明白了····都挺好理解
2009-10-26 09:25
蓝夜草心
Rank: 1
等 级:新手上路
帖 子:6
专家分:3
注 册:2010-1-7
得分:0 
谢谢很好,很详细,
2010-01-12 15:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-242057-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.115440 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved