源码展示:ASP.NET 数据访问类

软考笔记--层次式架构之数据访问层设计 而在实际的开发中,真正对客户有价值的是其独特的业务功能,而不应该把大量时间花在编写数据库访问,CRUD方法、后期的bug查找和维护上。使用ORM之后,ORM框架已经把数据库转变成了熟悉的对象,只需要了解面向对象开发就可以实现数据库应用程序的开发,不需要浪费时间在SQL上,同时也减少了代码量,减少出错的机会。离线数据模式是以数据为中心,数据从数据源获取之后,将按照某种预定义的结构存放在系统中,成为应用的中心,离线,对数据的各种操作独立于各种与后台数据源之间的连接或是事务;工厂方法是一个类的实例化延迟到子类。 阅读详情

 using System;
using System.Data;
using System.Data.SqlClient;

namespace SysClassLibrary
{
 /// <summary>
 /// DataAccess 的摘要说明。
 /// <description>数据处理基类,调用方式:DataAccess.DataSet((string)sqlstr);或者DataAccess.DataSet((string)sqlstr,ref DataSet ds); </description>
 /// </summary>
 public class DataAccess
 {
  #region  属性
  protected static SqlConnection conn=new SqlConnection();
  protected static SqlCommand    comm=new SqlCommand();
  #endregion
  public DataAccess()
  {
   //init();
  }
  #region 内部函数  静态方法中不会执行DataAccess()构造函数

  /// <summary>
  /// 打开数据库连接
  /// </summary>
  private static void openConnection()
  {
   if (conn.State == ConnectionState.Closed)
   {
    //SysConfig.ConnectionString 为系统配置类中连接字符串,如:"server=localhost;database=databasename;uid=sa;pwd=;"

    conn.ConnectionString = SysConfig.ConnectionString ;
    comm.Connection =conn;
    try
    {
     conn.Open();
    }
    catch(Exception e)
    {
     throw new Exception(e.Message);
    }
   }
  }
  /// <summary>
  /// 关闭当前数据库连接
  /// </summary>
  private static void closeConnection()
  {
   if(conn.State == ConnectionState.Open)
    conn.Close();
   conn.Dispose();
   comm.Dispose();
  }
  #endregion
  /// <summary>
  /// 执行Sql查询语句
  /// </summary>
  /// <param name="sqlstr">传入的Sql语句</param>
  public static void ExecuteSql(string sqlstr)
  {try
   {
    openConnection();
    comm.CommandType =CommandType.Text ;
    comm.CommandText =sqlstr;
    comm.ExecuteNonQuery();
   }
   catch(Exception e)
   {
    throw new Exception(e.Message);
   }
   finally
   {
    closeConnection();
   }
  }

  /// <summary>
  /// 执行存储过程
  /// </summary>
  /// <param name="procName">存储过程名</param>
  /// <param name="coll">SqlParameters 集合</param>
  public static void ExecutePorcedure(string procName,SqlParameter[] coll)
  {
   try
   {
    openConnection();
    for(int i=0;i<coll.Length;i++)
    {
     comm.Parameters .Add(coll[i]);
    }
    comm.CommandType=CommandType.StoredProcedure ;
    comm.CommandText =procName;
    comm.ExecuteNonQuery();
   }
   catch(Exception e)
   {
    throw new Exception(e.Message);
   }
   finally
   {
    comm.Parameters.Clear();
    closeConnection();
   }
  }

  /// <summary>
  /// 执行存储过程并返回数据集
  /// </summary>
  /// <param name="procName">存储过程名称</param>
  /// <param name="coll">SqlParameter集合</param>
  /// <param name="ds">DataSet </param>
  public static void ExecutePorcedure(string procName,SqlParameter[] coll,ref DataSet ds)
  {
   try
   {
    SqlDataAdapter da=new SqlDataAdapter();
    openConnection();
    for(int i=0;i<coll.Length;i++)
    {
     comm.Parameters .Add(coll[i]);}
    comm.CommandType=CommandType.StoredProcedure ;
    comm.CommandText =procName;
   
    da.SelectCommand =comm;
    da.Fill(ds);
   }
   catch(Exception e)
   {
    throw new Exception(e.Message);
   }
   finally
   {
    comm.Parameters.Clear();
    closeConnection();
   }
  }

  /// <summary>
  /// 执行Sql查询语句并返回第一行的第一条记录,返回值为object 使用时需要拆箱操作 -> Unbox
  /// </summary>
  /// <param name="sqlstr">传入的Sql语句</param>
  /// <returns>object 返回值 </returns>
  public static object ExecuteScalar(string sqlstr)
  {
   object obj=new object();
   try
   {
    openConnection();
    comm.CommandType =CommandType.Text ;
    comm.CommandText =sqlstr;
    obj=comm.ExecuteScalar();
   }
   catch(Exception e)
   {
    throw new Exception(e.Message);
   }
   finally
   {
    closeConnection();
   }
   return obj;
  }

  /// <summary>
  /// 执行Sql查询语句,同时进行事务处理
  /// </summary>
  /// <param name="sqlstr">传入的Sql语句</param>
  public static void ExecuteSqlWithTransaction(string sqlstr)
  {
   SqlTransaction trans ;
   trans=conn.BeginTransaction();
   comm.Transaction =trans;
   try
   {
    openConnection();
    comm.CommandType =CommandType.Text ;
    comm.CommandText =sqlstr;
    comm.ExecuteNonQuery(); trans.Commit();
   }
   catch
   {
    trans.Rollback();
   }
   finally
   {
    closeConnection();
   }
  }

  /// <summary>
  /// 返回指定Sql语句的SqlDataReader,请注意,在使用后请关闭本对象,同时将自动调用closeConnection()来关闭数据库连接
  /// 方法关闭数据库连接
  /// </summary>
  /// <param name="sqlstr">传入的Sql语句</param>
  /// <returns>SqlDataReader对象</returns>
  public static SqlDataReader dataReader(string sqlstr)
  {
   SqlDataReader dr=null;
   try
   {
    openConnection();
    comm.CommandText =sqlstr;
    comm.CommandType =CommandType.Text ;
    dr=comm.ExecuteReader(CommandBehavior.CloseConnection);
   }
   catch
   {
    try
    {
     dr.Close();
     closeConnection();
    }
    catch
    {
    }
   }
   return dr;
  }
  /// <summary>
  /// 返回指定Sql语句的SqlDataReader,请注意,在使用后请关闭本对象,同时将自动调用closeConnection()来关闭数据库连接
  /// 方法关闭数据库连接
  /// </summary>
  /// <param name="sqlstr">传入的Sql语句</param>
  /// <param name="dr">传入的ref DataReader 对象</param>
  public static void dataReader(string sqlstr,ref SqlDataReader dr)
  {
   try
   {
    openConnection();
    comm.CommandText =sqlstr;
    comm.CommandType =CommandType.Text ;
    dr=comm.ExecuteReader(CommandBehavior.CloseConnection);
   }
   catch
   {
    try
    {
     if(dr!=null && !dr.IsClosed) dr.Close();
    }
    catch
    {
    }
    finally
    {
     closeConnection();
    }
   }
  }

  /// <summary>
  /// 返回指定Sql语句的DataSet
  /// </summary>
  /// <param name="sqlstr">传入的Sql语句</param>
  /// <returns>DataSet</returns>
  public static DataSet dataSet(string sqlstr)
  {
   DataSet ds= new DataSet();
   SqlDataAdapter da=new SqlDataAdapter();
   try
   {
    openConnection();
    comm.CommandType =CommandType.Text ;
    comm.CommandText =sqlstr;
    da.SelectCommand =comm;
    da.Fill(ds);
   }
   catch(Exception e)
   {
    throw new Exception(e.Message);
   }
   finally
   {
    closeConnection();
   }
   return ds;
  }

  /// <summary>
  /// 返回指定Sql语句的DataSet
  /// </summary>
  /// <param name="sqlstr">传入的Sql语句</param>
  /// <param name="ds">传入的引用DataSet对象</param>
  public static void dataSet(string sqlstr,ref DataSet ds)
  {
   SqlDataAdapter da=new SqlDataAdapter();
   try
   {
    openConnection();
    comm.CommandType =CommandType.Text ;
    comm.CommandText =sqlstr;
    da.SelectCommand =comm;
    da.Fill(ds);
   }
   catch(Exception e)
   {
    throw new Exception(e.Message);
   }finally
   {
    closeConnection();
   }
  }
  /// <summary>
  /// 返回指定Sql语句的DataTable
  /// </summary>
  /// <param name="sqlstr">传入的Sql语句</param>
  /// <returns>DataTable</returns>
  public static DataTable dataTable(string sqlstr)
  {
   SqlDataAdapter da=new SqlDataAdapter();
   DataTable datatable=new DataTable();
   try
   {
    openConnection();
    comm.CommandType =CommandType.Text ;
    comm.CommandText =sqlstr;
    da.SelectCommand =comm;
    da.Fill(datatable);
   }
   catch(Exception e)
   {
    throw new Exception(e.Message);
   }
   finally
   {
    closeConnection();
   }
   return datatable;
  }

  /// <summary>
  /// 执行指定Sql语句,同时给传入DataTable进行赋值
  /// </summary>
  /// <param name="sqlstr">传入的Sql语句</param>
  /// <param name="dt">ref DataTable dt </param>
  public static void dataTable(string sqlstr,ref DataTable dt)
  {
   SqlDataAdapter da=new SqlDataAdapter();
   try
   {
    openConnection();
    comm.CommandType =CommandType.Text ;
    comm.CommandText =sqlstr;
    da.SelectCommand =comm;
    da.Fill(dt);
   }
   catch(Exception e)
   {
    throw new Exception(e.Message);
   }
   finally
   {
    closeConnection();
   }
  }
  /// <summary>/// 执行带参数存储过程并返回数据集合
  /// </summary>
  /// <param name="procName">存储过程名称</param>
  /// <param name="parameters">SqlParameterCollection 输入参数</param>
  /// <returns></returns>
  public static DataTable dataTable(string procName,SqlParameterCollection parameters)
  {
   SqlDataAdapter da=new SqlDataAdapter();
   DataTable datatable=new DataTable();
   try
   {
    openConnection();
    comm.Parameters.Clear();
    comm.CommandType=CommandType.StoredProcedure ;
    comm.CommandText =procName;
    foreach(SqlParameter para in parameters)
    {
     SqlParameter p=(SqlParameter)para;
     comm.Parameters.Add(p);
    }
    da.SelectCommand =comm;
    da.Fill(datatable);
   }
   catch(Exception e)
   {
    throw new Exception(e.Message);
   }
   finally
   {
    closeConnection();
   }
   return datatable;
  }

  public static DataView dataView(string sqlstr)
  {
   SqlDataAdapter da=new SqlDataAdapter();
   DataView dv=new DataView();
   DataSet ds=new DataSet();
   try
   {
    openConnection();
    comm.CommandType=CommandType.Text;
    comm.CommandText =sqlstr;
    da.SelectCommand =comm;
    da.Fill(ds);
    dv=ds.Tables[0].DefaultView;
   }
   catch(Exception e)
   {
    throw new Exception(e.Message);
   }
   finally
   {
    closeConnection();
   }
   return dv;
  }
 }

}

ASP.NET购物车(源码下载) 说明:该实例基于ASP.NET3.5使用Session实现购物车功能,商品的分类以及产品的管理功能不在此实现。         希望该实例能对对购物车功能实现不太清楚的开发人员起到抛砖引玉的功效:)。1、惯例——预览功能产品列表:购物车:2、Products表设计3、Product表模拟数据3、数据访问类SqlHelper.cs类图:代码:using System; using System.Data; using System.Data.SqlClient; namespace DAO { 阅读详情

相关推荐

深入学习ASP.NET:项目源码实践大全

ASP.NET是微软公司推出的一个用于web开发的框架,它构建在.NET框架之上,用于创建高性能、跨平台的Web应用程序。它支持多种编程语言,包括C#、VB.NET等,并提供了一个丰富的库和工具集,以便开发者能够构建动态、数据驱动的web站点。ASP.NET核心特性包括强大的服务器端控件,状态管理和事件驱动的编程模型。开发者可以利用这些特性,快速构建出功能丰富、易于维护的Web应用程序。

weixin_42592399的博客 1084

天天学C#--数据访问类(一)

这是网上一位仁兄写的数据访问类,封装了大部分底层的数据库操作,比如返回DataSet,DataTable执行SQL语句,存储过程等。它是支持SQLServer的,要改写成Oracle等其他数据库也很容易,用OleDb控件即可.MSDN真是好东东,要想编写通用的可移植的数据访问接口,可参考MSDN的这篇文章;http://www.microsoft.com/china/MSDN/li

有一种激情叫狂热----ClampHammer的专栏 1411

ASP.NET公墓陵园管理系统源码与应用

ASP.NET是一个由微软开发的免费开源服务器端Web应用程序框架。它基于.NET Framework或.NET Core,用于构建动态网站、Web应用程序和Web服务。ASP.NET框架允许开发者使用C#或VB.NET等编程语言来创建强大的Web解决方案。框架的设计目标之一是简化Web开发过程,通过提供一系列易于使用、可扩展且功能丰富的组件,使开发者能够快速构建和部署功能丰富的应用程序。

weixin_35748962的博客 787

ASP.NET通用数据库访问类

以前我在对数据库进行操作的时候都是在同一页面对数据库进行操作。这样的话,就是操作繁琐,而且需要重复的书写对数据库操作的代码,这样不仅浪费了很多的时间,而且也使得代码看起来非常的凌乱。至从接触到了三层架构的思想,明白了分层的好处,还有面向对象的好处。今天在看书的时候,看到周金桥老师的对数据库访问的通用类,就试着模仿的写了一个,代码清晰,而且很实用,包括了对数据库的所有的常用的操作。 ...

thewebcode 651

深入解析ASP.NET知识库源码

ASP.NET是一种流行的用于构建动态网站、API和Web应用程序的服务器端Web应用程序框架。它是.NET Framework的一部分,支持包括C#在内的多种编程语言。ASP.NET的核心特性是强大的处理能力和高效率,它允许开发者编写可维护和可扩展的应用程序。

weixin_35433448的博客 848

ASP.NET教程源码:从入门到实战

本文还有配套的精品资源,点击获取 简介:ASP.NET教程源码是初学者和开发者学习C#和ASP.NET Web应用程序开发的资源。它涵盖了从页面生命周期管理到数据绑定、用户身份验证和错误处理等基础到高级主题。通过实践示例,你可以掌握ASP.NET控件的使用、数据绑定技术、状态管理方法和异常处理技巧。本源码还可能涉及Web服务、API、MVC模式、部署和调试等内容,帮助你全面...

weixin_30653091的博客 1266

ADO.NET 【实体类】【数据访问类】

认识分层结构,分层式结构是最常见,也是最重要的一种结构。 三层架构(3-tier architecture) 界面层(User Interface layer) 主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。 业务逻辑层(Business Logic Layer)主要是针对具体的问题的操作,也可以理解成对数据层的操作 ...

weixin_30642869的博客 601

装饰行业网站源码全面解析:ASP.NET应用实践

htmltable {th, td {th {pre {简介:本装饰网站源码基于ASP.NET框架构建,支持装饰设计与装修服务类网站的快速搭建。源码涉及用户界面设计、服务器端C#代码、数据交互、业务逻辑处理、安全性配置等关键部分。包括UI组件、数据库连接、用户认证授权、系统配置以及第三方资源集成。开发者可根据需求进行定制,配置服务器环境以确保网站的稳定运行。

weixin_42588555的博客 922

数据访问类

 //////////////数据访问类 using System;using System.ComponentModel;using System.Collections;using System.Web.Security;using System.Diagnostics;using System.Data;using System.Data.SqlClient;

johndancer的专栏 337

毕业设计管理系统:ASP.NET源码与应用

ASP.NET是一个用于构建动态Web应用程序的框架,它允许开发者使用.NET编程语言来创建Web表单、Web服务和Web应用程序。ASP.NET的两大核心组件是Web Forms和MVC(Model-View-Controller),前者提供了一种基于服务器控件的编程模型,而后者则倡导一种更现代的将应用程序分离为模型、视图和控制器的开发模式。ASP.NET的出现,极大地简化了Web开发的复杂度,提高了开发效率和可维护性。在项目管理中,任务是实现项目目标的基本单元。

weixin_42181686的博客 908

ASP.NET 4入门与C#编程经典源码解析

简介:ASP.NET 4是一个用于开发Web应用程序的框架,是.NET Framework的组成部分,采用C#语言编写,适合初学者学习。本书由清华大学出版社出版,刘伟琴翻译,提供深入的理论讲解和实践案例。本文将深入探讨ASP.NET 4的关键概念,如架构、Web Forms、MVC模式、控件与事件、页面生命周期、状态管理、数据访问、部署配置、AJAX支持以及安全性,并通过C#示例代码加深理解。

weixin_31315007的博客 841

分享88个ASP.NET源码,总有一款适合您

分享88个ASP.NET源码,总有一款适合您

zy0412326的专栏 9002

ASP.NET(C#)数据库访问和绑定源代码

在ASP.NET(C#)中对SQL数据库进行访问和绑定的实例源代码

数据访问类代码

封装有数据库访问代码,很经典,过年使用,经过验证。。。

asp.net C#数据库访问公共类

包含了SQL server Access Oracle 和OleDb访问

ASP.NET数据访问技术

了解ASP.NET,掌握访问技术,更好的实现数据访问

强大的数据访问类

傻瓜式调用,一件调用增删改查,事物,存储过程,触发器!

解构LOL数值平衡:从基础公式到实战决策的深层逻辑

本文深入解析了《英雄联盟》数值平衡的底层逻辑,从基础攻击力公式到经济系统设计,揭示了MOBA游戏背后的精密数学架构。通过实战案例展示护甲减伤、技能伤害建模等核心机制,探讨装备定价与战斗节奏的数值关联,帮助玩家理解版本更新中的平衡艺术。

weixin_42540248的博客 347
上一篇: 大记事:涨洪水了
下一篇: 网络硬盘
devfan
博客等级 码龄22年 45粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值