设为首页 | 加入收藏 | 联系站长
Google
 | 星际争霸 | 星际争霸II | 暗黑破坏神
 | 魔兽争霸 | 英雄无敌  
 您现在的位置: 好技术学习网 >> 技术文章 >> ASP.NET技术 >> ASP.NET技术应用 >> 文章正文
相 关 文 章
解析.Net框架下的XML编程技…
VS.NET下web项目源代码管理
NUnit学习之VS.net 2005篇
在VS.NET 2005中体验clicko…
使用VS.NET 2005 Beta 2初次…
VS.NET 2002下水晶报表的安…
VS.Net中的水晶报表的应用
vs.net+c#程序快速开发数据…
VS.NET解决方案的版本兼容问…
当VS.NET2003遇上2005,WebS…
最 新 热 门
最 新 推 荐
精 彩 游 戏
移动能力强,防御强大,任何地方都可以建筑,隐形,多样性,船舶,科技树…
[星际补丁]1.14·1.13f·1.08b
[星际2]酷图 [星际2]人族视频
[人类]大法师  [兽族]暗影猎手
[精灵]恶魔猎手 [不死]死亡骑士
[资讯]魔兽资讯 [图库]魔兽酷图
[下载]魔兽下载 [壁纸]精美壁纸
暗黑破坏神入门 暗黑破坏神指引
[Hero5]宝物一览   英雄无敌
当前时间是:
非常好用的数据库操作类
作者:- 来源:中国IT实验室 时间:2008-2-17 11:43:12 『 字号:  』
这是我们项目组一直在用的数据库操作类。代码如下:
   
  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;
   }
   
   
   IDisposable 成员#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传进去就可以了。
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【打印本文】【关闭窗口

    网站公告 | 关于本站 | 联系站长 | 设为首页 | 加入收藏 | 友情链接 | 版权申明 | 广告服务 | 网站地图 | 访客留言

    Copyright ©
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览
    | |
    本站大部分信息资源来源于网络,仅供学习|研究|探讨|收藏之用,版权归原作者所有!