.NET 进行数据库访问时需要调用的类

原创 2007年09月13日 16:38:00

using System;
using System.ComponentModel;
using System.Collections;
using System.Diagnostics;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.SessionState;
using System.Web;


namespace Utilities
{

 /// <summary>
 /// DbAccess类,即进行数据库访问时需要调用的类
 /// </summary>
 public class DbaseBS
 {
  //取出数据库连接字符串
  public static readonly string conStr = ConfigurationSettings.AppSettings["ConnectionString"];  
  
  /// <summary>
  /// 得到数据库连接对象
  /// </summary>
  /// <returns>数据库连接对象</returns>
  public static SqlConnection GetConObject()
  {
   return new SqlConnection(conStr);
  }

  /// <summary>
  /// 执行操作数据库的存储过程
  /// </summary>
  /// <param name="procName">存储过程名称</param> 
  /// <returns>存储过程执行后所影响的行数</returns>
  public static int ExecuteNonQuery(string procName)
  {
   SqlCommand cmd = new SqlCommand();

   using (SqlConnection con = GetConObject())
   {
    CreateCommand(cmd, con, null, procName,null);
    int val = cmd.ExecuteNonQuery();
    cmd.Parameters.Clear();
    cmd.Dispose();
    return val;
   }
  } 

  /// <summary>
  /// 执行操作数据库的存储过程
  /// </summary>
  /// <param name="procName">存储过程名称</param>
  /// <param name="cmdParms">存储过程所使用的参数</param>
  /// <returns>存储过程执行后所影响的行数</returns>
  public static int ExecuteNonQuery(string procName, SqlParameter[] cmdParms)
  {
   SqlCommand cmd = new SqlCommand();

   using (SqlConnection con = GetConObject())
   {
    CreateCommand(cmd, con, null, procName, cmdParms);
    int val = cmd.ExecuteNonQuery();
    cmd.Parameters.Clear();
    cmd.Dispose();
    return val;
   }
  } 

  /// <summary>
  /// 执行操作数据库的存储过程(事务控制)
  /// </summary>
  /// <param name="trans">数据库连接所关联的事务对象</param>
  /// <param name="procName">存储过程名称</param>
  /// <param name="cmdParms">存储过程所使用的参数</param>
  /// <returns>存储过程执行后所影响的行数</returns>
  public static int ExecuteNonQuery(SqlTransaction trans, string procName, SqlParameter[] cmdParms)
  {
   SqlCommand cmd = new SqlCommand();
   CreateCommand(cmd, trans.Connection, trans, procName, cmdParms);
   int val = cmd.ExecuteNonQuery();
   cmd.Parameters.Clear();
   cmd.Dispose();
   return val;
  }

  /// <summary>
  /// 执行读数据集操作,以DataReader的形式返回
  /// </summary>
  /// <param name="procName">存储过程名称</param>
  /// <param name="cmdParms">存储过程所使用的参数</param>
  /// <returns>DataReader对象</returns>
  public static SqlDataReader ExecuteReader(string procName, SqlParameter[] cmdParms)
  {
   SqlCommand cmd = new SqlCommand();
   SqlConnection con = GetConObject();

   try
   {
    CreateCommand(cmd, con, null, procName, cmdParms);
    SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    cmd.Parameters.Clear();
    return dr;
   }
   catch(Exception ex)
   {
    cmd.Dispose();
    Close(con);
    throw ex;
   }   
  }  
  
  /// <summary>
  /// 执行读数据集操作,以DataReader的形式返回
  /// </summary>
  /// <param name="procName">存储过程名称</param>  
  /// <returns>DataReader对象</returns>
  public static SqlDataReader ExecuteReader(string procName)
  {
   SqlCommand cmd = new SqlCommand();
   SqlConnection con = GetConObject();

   try
   {
    CreateCommand(cmd, con, null, procName, null);
    SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    cmd.Parameters.Clear();
    return dr;
   }
   catch(Exception ex)
   {
    cmd.Dispose();
    Close(con);
    throw ex;
   }   
  }
  
  /// <summary>
  /// 执行读数据集操作,以DataSet的形式返回
  /// </summary>
  /// <param name="procName">存储过程名称</param>
  /// <param name="cmdParms">存储过程所使用的参数</param>
  /// <returns>DataSet对象</returns>
  public static DataSet ExecuteDataSet(string procName, SqlParameter[] cmdParms)
  {
   SqlCommand cmd = new SqlCommand();
   SqlConnection con = GetConObject();
   DataSet ds = new DataSet();

   try
   {
    CreateCommand(cmd, con, null, procName, cmdParms);
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = cmd;
    da.Fill(ds);
    cmd.Parameters.Clear();
    return ds;
   }
   catch(Exception ex)
   {
    throw ex;
   } 
   finally
   {
    cmd.Dispose();
    Close(con);
   }
  }
  

  /// <summary>
  /// 执行读数据集操作,以DataSet的形式返回
  /// </summary>
  /// <param name="procName">存储过程名称</param>  
  /// <returns>DataReader对象</returns>
  public static DataSet ExecuteDataSet(string procName)
  {
   SqlCommand cmd = new SqlCommand();
   SqlConnection con = GetConObject();
   DataSet ds = new DataSet();

   try
   {
    CreateCommand(cmd, con, null, procName, null);
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = cmd;
    da.Fill(ds);
    cmd.Parameters.Clear();
    return ds;
   }
   catch(Exception ex)
   {
    throw ex;
   } 
   finally
   {
    cmd.Dispose();
    Close(con);
   }
  } 

  /// <summary>
  /// 创建数据库执行命令
  /// </summary>
  /// <param name="cmd">数据库执行命令对象</param>
  /// <param name="con">数据库连接对象</param>
  /// <param name="trans">数据库事务对象</param>
  /// <param name="procName">存储过程名称</param>
  /// <param name="cmdParms">存储过程所使用的参数数组</param>
  public  static void CreateCommand(SqlCommand cmd, SqlConnection con, SqlTransaction trans, string procName, SqlParameter[] cmdParms)
  {
   if (con.State != ConnectionState.Open)
    con.Open();

   cmd.Connection = con;
   cmd.CommandText = procName;

   if (trans != null)
   {
    cmd.Transaction = trans;
   }

   cmd.CommandType = CommandType.StoredProcedure;

   if (cmdParms != null)
   {
    foreach(SqlParameter parm in cmdParms)
     cmd.Parameters.Add(parm);
   }
  }
  
  /// <summary>
  /// 准备输入参数.
  /// </summary>
  /// <param name="paramName">参数名称</param>
  /// <param name="dbType">参数数据类型</param>
  /// <param name="size">参数大小</param>
  /// <param name="value">参数值</param>
  /// <returns>输入参数</returns>
  public static SqlParameter MakeInParam(string paramName, SqlDbType dbType, int size, object inValue)
  {
   return MakeParam(paramName, dbType, size, ParameterDirection.Input, inValue);    
  }  


  /// <summary>
  /// 准备输出参数.
  /// </summary>
  /// <param name="paramName">参数名称</param>
  /// <param name="dbType">参数数据类型</param>
  /// <param name="size">参数大小</param>  
  /// <returns>输出参数</returns>
  public static 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>  
  /// <param name="direction">参数方向</param>
  /// <param name="inValue">参数值</param>
  /// <returns>输入或输出参数</returns>
  public static SqlParameter MakeParam(string paramName, SqlDbType dbType, int size, ParameterDirection direction, object inValue)
  {
   SqlParameter param;

   if(size > 0)
    param = new SqlParameter(paramName,dbType,size);
   else
    param = new SqlParameter(paramName,dbType);

   param.Direction = direction;

   if (!(direction == ParameterDirection.Output && inValue == null))
    param.Value = inValue;

   return param;
  } 
 
  /// <summary>
  /// 关闭数据库连接
  /// </summary>
  /// <param name="myConn">数据库连接对象</param>
  public static void Close(SqlConnection myConn)
  {
   if((myConn != null) && (myConn.State == ConnectionState.Open))
   {
    myConn.Close();
   } 
  }

  /// <summary>
  /// 直接执行sql语句返回数据集
  /// </summary>
  /// <param name="strSql">sql语句</param>
  /// <returns>查询的数据集</returns>
  public static DataSet ExecuteDataSetSql(string strSql)
  { 
   SqlCommand cmd = new SqlCommand();
   SqlConnection con = GetConObject();
   DataSet ds = new DataSet();
   SqlDataAdapter da = null;

   try
   {
    da = new SqlDataAdapter(strSql,con);
    da.Fill(ds);
    return ds;
   }
   catch(Exception ex)
   {
    throw ex;
   } 
   finally
   {
    if(da != null)
     da.Dispose();

    cmd.Dispose();
    Close(con);
   }
  } 


  
  /// <summary>
  /// 直接运行sql语句
  /// </summary>
  /// <param name="trans">事务</param>
  /// <param name="strSql">sql语句</param>
  public static void ExecuteSql( SqlTransaction trans,string strSql)
  { 
   SqlCommand cmd = new SqlCommand();
   SqlConnection con = GetConObject();

   try
   {
    if (con.State != ConnectionState.Open)
     con.Open();

    cmd.Connection = trans.Connection;
    cmd.Transaction = trans;
    cmd.CommandText = strSql;

    cmd.ExecuteNonQuery();
   }
   catch(Exception ex)
   {
    throw ex;
   } 
   finally
   {
    cmd.Dispose();
    Close(con);
   }
  } 
 }
}

 

.NET学习之静态类

1、静态类    1)仅包含静态成员。    2)不能被实例化。    3)是密封的,不可被继承    4)不能包含实例构造函数 2、静态成员     1)如果创建了该类的任何实例,不能使用实例来访问...
  • xc1499715227
  • xc1499715227
  • 2015年03月29日 22:07
  • 450

Java调用net的webservice故障排除实战分享

出现错误:WSDLToJava Error: Thrown by JAXB: undefined element declaration 's:schema'  第一种方式(仍用cxf ...
  • u011186019
  • u011186019
  • 2014年11月30日 13:58
  • 948

java调用.net发布webservice心得

之前做.net,发布、引用webservice很容易,最近转做java,需要调用.net发布的webservice,感觉很容易,于是网上找了几种方案,放上来分享给大家。 WebService地址:ht...
  • elvis_gao
  • elvis_gao
  • 2015年11月26日 14:56
  • 4032

.net 中的常用异常类

1 类 说明 基异常类型: System.Exception 所有异常的基类型。 System.ApplicationException 发生非致命应用程序错误时引发...
  • Fanbin168
  • Fanbin168
  • 2017年04月08日 14:06
  • 555

什么是序列化?在什么情况下将类序列化?

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。  可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。  序列化是为了解决在对对象流进行读写操作时所引发的...
  • m372897500
  • m372897500
  • 2016年05月21日 13:00
  • 1254

《招聘一个靠谱的iOS》|| 文章 || 面试题 || 参考答案

招聘一个靠谱的 iOS 近一年内陆续面试了不少人了,从面试者到面试官的转变让我对 iOS 招聘有了更多的感受。经过了前段时间的一大波面试,我们终于找到了志同道合的小伙伴,面试也暂时告一段落了。总...
  • lynnjinglei
  • lynnjinglei
  • 2015年09月10日 11:39
  • 1586

net调用java接口

string data = "" + "" + "" + ...
  • hutao1101175783
  • hutao1101175783
  • 2015年02月27日 17:35
  • 748

asp.net中验证码的生成和引用

分类:             程序开发              2010-06-04 14:45     234人阅读     评论(0)     收藏     举报     ...
  • Cherishchance
  • Cherishchance
  • 2013年07月29日 20:22
  • 536

关于Scala子类继承父类属性的问题释疑---子类构造器参数不要与父类属性同名

今天和朋友聊到scala继承的时候,发现有一些问题,我
  • zl3450341
  • zl3450341
  • 2014年06月16日 19:21
  • 3078

PB 调用.NET COM组件

今天需要作一下pb引用.net的外接程序类。反复测试都没有成功。看到这篇文章解决了我的问题。在此感谢。综合我的碰壁经验。需要注意以下两点。 1..net项目需要勾选生成 com组件。 2....
  • pengdayong77
  • pengdayong77
  • 2015年06月30日 12:29
  • 657
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.NET 进行数据库访问时需要调用的类
举报原因:
原因补充:

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