非常好用的数据库操作类(转)


这是一个简单的数据库操作类。小巧,收捷,方便。
代码如下:

using System;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.UI;
using System.Collections;

namespace test
{
     ///   <summary>
    
///  DbAccess 的摘要说名。
    
///   </summary>
     public  class DbAccess
    {
         private  bool disposed =  false;

         public DbAccess()
        {
             //
            
//  TODO: 在此处添加构造函数逻辑
            
//
        }

         private  static  string dbconnectstring = System.Configuration.ConfigurationSettings.AppSettings.Get( " strConn ");

         private  static  void curPage_Unload( object sender, EventArgs e)
        {
            Release();
        }

         public  static Hashtable innerHash= new Hashtable();

         public  static DbAccess Instance
        {
             get
            {
                Page curPage=(Page)HttpContext.Current.Handler;
                 if(innerHash.Contains(curPage))
                     return (DbAccess)innerHash[curPage];
                 else
                {
                    DbAccess obj= new DbAccess();
                    innerHash[curPage]=obj;
                    curPage.Unload+= new EventHandler(curPage_Unload);
                     return obj;
                }
            }
        }
         private  static  void Release()
        {
            Page curPage=(Page)HttpContext.Current.Handler;
             if(innerHash.Contains(curPage))
            {
                ((DbAccess)innerHash[curPage]).Dispose();
                innerHash.Remove(curPage);
            }
        }
         public  static DbAccess GetObject( object obj)
        {
             if(innerHash.Contains(obj))
                 return (DbAccess)innerHash[obj];
             else
            {
                DbAccess dbobj= new DbAccess();
                innerHash[obj]=dbobj;
                 return dbobj;
            }
        }
         public  static  void Release( object obj)
        {
             if(innerHash.Contains(obj))
            {
                ((DbAccess)innerHash[obj]).Dispose();
                innerHash.Remove(obj);
            }
        }

         private SqlConnection innerCn= null;
        
         public System.Data.SqlClient.SqlConnection GetConn() 
        {
             if(innerCn== null)
            {
                innerCn= new SqlConnection(dbconnectstring);
                 try
                {
                    innerCn.Open();
                }
                 catch(Exception)
                {
                  //    MessageBox("打开数据库连接失败!");
                     return  null;
                }
            }
             return innerCn;
        }

         ///   <summary>
        
/// 执行SQL语句,返回DataTable对象。
        
///   </summary>
        
///   <param name="strSQL"> 要执行的SQL语句,为字符串类型string </param>
        
///   <returns> 返回DataTable对象,由函数调用者主动dispose </returns>
         public System.Data.DataTable ExecuteSql( string strSQL)
        {    
            SqlConnection myCn = null;
            System.Data.SqlClient.SqlDataAdapter objDa= null;
             try
            {         
                myCn=GetConn();    
                 if(myCn.State==ConnectionState.Closed)    myCn.Open();    

                objDa= new SqlDataAdapter(strSQL,myCn);
                DataSet objDs= new DataSet();
                objDa.Fill(objDs, " 0 ");
                 return objDs.Tables[ " 0 "];

            }
             catch(Exception e)
            {    
                 throw  new Exception(e.Message);
            }
             finally
            {
                objDa.Dispose();
            }
        }

         ///   <summary>
        
///  判断是否有指定名称的表,判断是否有指定的字段
        
///   </summary>
        
///   <param name="strSQL"> (string) </param>
        
///   <returns> (int) </returns>

        
///   <summary>
        
///  按SQL语句返回DataReader对象
        
///   </summary>
        
///   <param name="strSQL"> (string) </param>
        
///   <returns> (System.Data.SqlClient.SqlDataReader) </returns>
         public SqlDataReader ExecuteSqlReader( string strSql)
        {
             try
            {
                SqlConnection myCn=GetConn();
                SqlCommand myCmd= new SqlCommand(strSql,myCn);
                 if(myCn.State==ConnectionState.Closed)    myCn.Open();
                SqlDataReader objReader=myCmd.ExecuteReader();
                 return objReader;
            }
             catch(Exception)
            {
                 return  null;
            }
        }

         public SqlDataReader ExecuteSqlReaderMember( string strSql)
        {
             try
            {
                SqlConnection myCn=GetConn();
                SqlCommand myCmd= new SqlCommand(strSql,myCn);
                 if(myCn.State==ConnectionState.Closed)    myCn.Open();
                SqlDataReader objReader=myCmd.ExecuteReader();
                 return objReader;
            }
             catch(Exception)
            {
                 return  null;
            }
        }

         ///   <summary>
        
///  执行SQL语句,返回数据集的第一行第一列的值(object)。
        
///   </summary>
        
///   <param name="strSQL"> (string) </param>
        
///   <returns> (object) </returns>
         public  object ExecuteSqlEx1( string strSQL)
        {
            SqlConnection myCn = GetConn();            
            SqlCommand myCmd =  new SqlCommand(strSQL,myCn);
             try
            {
                 if(myCn.State==ConnectionState.Closed)    myCn.Open();
                 object r = myCmd.ExecuteScalar();
                 if(Object.Equals(r, null))
                {
                     throw  new Exception( " 无有效值 ");
                }
                 else
                {
                     return r;
                }                
            }
             catch(System.Data.SqlClient.SqlException)
            {        
                 return  null;
            }
             finally
            {
                myCmd.Dispose();
            }
        }    

         ///   <summary>
        
///  执行SQL语句,返回数据集的第一行第一列的值(int)。
        
///   </summary>
        
///   <param name="strSQL"> (string) </param>
        
///   <returns> (int) </returns>
         public  int ExecuteSqlEx2( string strSQL)
        {
            SqlConnection myCn = GetConn();            
            SqlCommand myCmd =  new SqlCommand(strSQL,myCn);
             try
            {
                 if(myCn.State==ConnectionState.Closed)    myCn.Open();
                 object r = myCmd.ExecuteScalar();
                 if(Object.Equals(r, null))
                {
                     throw  new Exception( " 无有效值 ");
                }
                 else
                {
                     return Convert.ToInt32(r);
                }                
            }
             catch(System.Data.SqlClient.SqlException e)
            {                
                 throw  new Exception(e.Message);
            }
             finally
            {
                myCmd.Dispose();
            }
        }    
    
         ///   <summary>
        
///  执行SQL语句,不返回任何结果。
        
///   </summary>
        
///   <param name="strSQL"> (string) </param>
        
///   <returns> bool </returns>
         public  bool ExecuteSqlNoneResult( string strSQL)
        {
            SqlConnection myCn = GetConn();            
            SqlCommand myCmd =  new SqlCommand(strSQL,myCn);
             try
            {
                 if(myCn.State==ConnectionState.Closed)    myCn.Open();
                myCmd.ExecuteNonQuery();
            }
             catch(System.Data.SqlClient.SqlException e)
            {                
                 throw  new Exception(e.Message);                
            }
             finally
            {
                myCmd.Dispose();
            }
             return  true;
        }    
    
   #region IDisposable 成员
         public  void Dispose()
        {
            Dispose( true);
            GC.SuppressFinalize( this);
        }
   #endregion

         private  void Dispose( bool disposing)
        {
             if(! this.disposed)
            {
                 if(disposing)
                {
                     if(innerCn!= null)
                    {
                         if(innerCn.State==ConnectionState.Open)
                            innerCn.Close();
                        innerCn.Dispose();
                    }
                }
            }
            disposed =  true;         
        }

    }
}


使用方法

DbAccess.Instance.ExecuteSqlNoneResult(sql);
把你的sql传进去就可以了。

附加
1. 跟SQLHelper相比,SQLHelper 功能应该比你这个强大好用。
2. 现在ORM一大堆,再加上LINQ,这个类已经发挥不了太大作用了。
3. 企业库 DAAB已经封装的很好了。



本文转自钢钢博客园博客,原文链接:http://www.cnblogs.com/xugang/archive/2008/01/16/1040792.html,如需转载请自行联系原作者

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值