.net 在数据访问层中写一个DBhelper优化类
复习了在学校的时候做的WinForm端的一个学生信息管理系统,用的三层架构,看了一下里面的数据优化类
这个类是用来把对数据库的操作封装成静态方法,增删改查的时候直接调用这个类,减少项目里代码的冗余和方便以后修改。
Dbhelper类代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; using System.Data; using Model; namespace DAL { class DBHelper { #region 获得连接对象 Connsql public static SqlConnection Connsql() { string sql = "server=.;database=vs;integrated security=sspi"; SqlConnection conn = new SqlConnection(sql); return conn; } //执行 增加,删除,修改的sql语句 #endregion #region 增加删除修改的sql语句执行方法 ExecuteNonQuery public static int ExecuteNonQuery(string sql,CommandType type,params SqlParameter[] sp) { SqlConnection conn = DBHelper.Connsql(); conn.Open(); SqlCommand sc = new SqlCommand(sql, conn); sc.CommandType = type; if(sp!=null) { foreach (SqlParameter p in sp) { sc.Parameters.Add(p); } } int i = sc.ExecuteNonQuery(); conn.Close(); return i; } #endregion #region 数据库返回一个值时的sql语句执行方法 public static Object ExecuteScalar(string sql,CommandType type, params SqlParameter[] paras) { SqlConnection conn = DBHelper.Connsql(); conn.Open(); SqlCommand sc = new SqlCommand(sql,conn); sc.CommandType=type; if(paras!=null) { foreach(SqlParameter s in paras ) { sc.Parameters.Add(s); } } object result = sc.ExecuteScalar(); conn.Close(); return result; } #endregion #region 数据库返回多行记录的执行方法 public static SqlDataReader ExecuteDataReader(string sql,CommandType type,params SqlParameter[] paras) { SqlConnection conn = DBHelper.Connsql(); conn.Open(); SqlCommand sc = new SqlCommand(sql,conn); sc.CommandType = type; if (paras != null) { foreach (SqlParameter s in paras) { sc.Parameters.Add(s); } } SqlDataReader dr = sc.ExecuteReader(CommandBehavior.CloseConnection); return dr; } #endregion #region 返回一个数据集时执行方法 public static DataSet ExecuteDataSet(string sql,CommandType type,params SqlParameter [] paras) { SqlConnection conn = DBHelper.Connsql(); conn.Open(); SqlCommand sc = new SqlCommand(sql,conn); sc.CommandType = type; if (paras != null) { foreach(SqlParameter s in paras) { sc.Parameters.Add(s); } } SqlDataAdapter sda = new SqlDataAdapter(sc); DataSet ds = new DataSet(); sda.Fill(ds); return ds; } #endregion } }
调用DbHelper类:
1.返回一个值:
int result =(int)this.ExecuteScalar("select count(*) from UserAccount", CommandType.Text);
2.返回一个数据集(存放到Dataset):
DataSet ds = ExecuteDataSet("select * from UserAccount", CommandType.Text); ];
3.返回一个数据集(存放到List),性能上比DataSet要好
#region 将数据填充到List集合中 public List<tbSpecialty> GettbSpecialty() { List<tbSpecialty> sp = new List<tbSpecialty>(); SqlDataReader dr = DBHelper.ExecuteDataReader("select * from tbSpecialtyInfo", CommandType.Text); while(dr.Read()) { tbSpecialty tsp = new tbSpecialty(); tsp.SpecialtyName = dr["SpecialtyName"].ToString(); sp.Add(tsp); } dr.Close(); return sp; } #endregion
4.增删改:
#region public int AddtbSpecialty(tbSpecialty sp) { string sql = "insert into tbSpecialtyInfo values(@name,@remark)"; SqlParameter p1 = new SqlParameter("@name", sp.SpecialtyName); SqlParameter p2 = new SqlParameter("@remark",sp.Remark); int result = DBHelper.ExecuteNonQuery(sql, CommandType.Text, p1, p2); return result; } #endregion
.net 在数据访问层中写一个DBhelper优化类的更多相关文章
- ClownFish:比手写代码还快的通用数据访问层
http://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html 阅读目录 开始 ClownFish是什么? 比手写代码还快的执行速度 ...
- 【2017-04-20】Ado.Net与面向对象结合架构中的数据访问层(实体类,数据访问类)
开发项目三层架构:界面层.业务逻辑层.数据访问层 今天学习一下数据访问层,分为实体类和数据访问类 所有的类放在App_Code这个文件夹下边.养成一个好的习惯. 一.实体类 数据库中的表映射为一个类, ...
- servlet层调用biz业务层出现浏览器 500错误,解决方法 dao数据访问层 数据库Util工具类都可能出错 通过新建一个测试类复制代码逐步测试查找出最终出错原因
package com.swift.jztk.servlet; import java.io.IOException; import javax.servlet.ServletException; i ...
- 随机获得MySQL数据库中100条数据方法 驾照题库项目 MVC架构 biz业务层的实现类 根据考试类型rand或order通过dao数据访问层接口得到数据库中100或全部数据
package com.swift.jztk.biz; import java.util.Collections; import java.util.Comparator; import java.u ...
- 【Filter 不登陆无法访问】web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面的功能
在web项目中写一个过滤器实现用户不登陆,直接给链接,无法进入页面,而重定向到登陆界面的功能. 项目是用springMVC+spring+hibernate实现 (和这个没有多大关系) 第一步: 首先 ...
- 使用Ninject+Moq在单元测试中抽象数据访问层
一.测试方法的业务逻辑时,通常都需要从数据库读取测试数据,但是每次初始化数据库数据都很麻烦,也会影响到其它业务对数据的访问,怎样抽象数据访问层呢?就是用Moq去模拟数据访问的逻辑 二.步骤如下 ...
- 【Hades】ades是一个开源库,基于JPA和Spring构建,通过减少开发工作量显著的改进了数据访问层的实现
几乎每个应用系统都需要通过访问数据来完成工作.要想使用领域设计方法,你就需要为实体类定义和构建资源库来实现领域对象的持久化.目前开发人员经常使用JPA来实现持久化库.JPA让持久化变得非常容易,但是仍 ...
- 企业级应用架构(三)三层架构之数据访问层的改进以及测试DOM的发布
在上一篇我们在宏观概要上对DAL层进行了封装与抽象.我们的目的主要有两个:第一,解除BLL层对DAL层的依赖,这一点我们通过定义接口做到了:第二,使我们的DAL层能够支持一切数据访问技术,如Ado.n ...
- 数据访问层的改进以及测试DOM的发布
数据访问层的改进以及测试DOM的发布 在上一篇我们在宏观概要上对DAL层进行了封装与抽象.我们的目的主要有两个:第一,解除BLL层对DAL层的依赖,这一点我们通过定义接口做到了:第二,使我们的DAL层 ...
随机推荐
- [原]逆向iOS SDK -- _UIImageAtPath 的实现(SDK 5.1)
注释过的反汇编代码:http://pan.baidu.com/share/link?shareid=3491166579&uk=537224442 伪代码(不精确,仅供参考): NSStrin ...
- [转]Disabling ASLR on individual iOS applications when using iOS 6.0.1
ASLR: Address Space Layout Randomization 查看应用是否进行了 ASLR 保护的方法:otool -hv ${File-Path} I recently enco ...
- c语言,string库函数strstr实现
说明: 原型:char *strstr(char *haystack, char *needle); 用法:#include <string.h> 功能:从字符串haystack中寻找ne ...
- cubieboard 配置WIFI
1.先装好驱动程序 2.ifconfig查看无线网卡的名称,比如 3.修改/etc/networking/interfaces,配置 wpa-essid填写WIFI名称 wpa-psk填写密码 4. ...
- 广播,多播,IGMP:网际组管理协议
广播,多播,IGMP:网际组管理协议 1.概述 IP有三种地址:单播地址, 广播地址,多播地址. 广播和多播仅应用于UDP. 每个以太网帧包含源主机和目的主机的以太网地址 ...
- 实用的android颜色配置表(亮瞎尼的双眼)
android开发中,常常会用到color.xml颜色配置,好的颜色配置可以让尼的应用让人看起来赏心悦目! 不罗嗦,上图先 该工程已经罗列了常用的颜色配置 附上工程链接:http://download ...
- asp.net 上传文件
文件上传实例 公司产品中一直是采用 flash 实现文件上传功能,但用户的需求多了以后遇到了越来越多难以解决的问题,最后试着用硕正提供的freeform.小型页面控件来解决. 硕正文件上传的实现途径有 ...
- Using django model/authentication/authorization within Tornado
There is a project which is deployed within django. So its authentication system is built from Djang ...
- android 工程里缺少 R.java 文件原因和解决方法
作为新手,学习android 的时候难免要导入一些示例,目的为了更加了解android各种API用法,顺便也可以学习下别人代码的写法. 可是导入android源码后,基本都有错误,R.java也不会自 ...
- SQlServer---时间的操作
select Day(getdate())--当前日是这个月的第几天 -Day(getdate()))))--当前月有多少天 -Day(getdate()))))-Day(getdate())--当前 ...