前言:

一开始不懂SqlHelper是什么,以为是新东西。第一遍大量的查资料,在csdn上找到很多人写好的SqlHelper类,发现每个人写的很像,但又都不一样,找了一个能用的上的,敲了一遍别人的代码,中间遇到很多不懂的语句,一点点的抠。整体下来,还是很朦胧!

后来,查到这个系列博客,打通了在SqlHelper的认知全貌!

ADO.net是.NET 平台的数据访问编程模型。由于存在多种数据库,为了能够用统一访问各种数据库,出现ADO.Net

连接不同的数据库,要引用对应的类库

每种对应类库中都有四个核心对象:很像老鼠偷玉米的过程

Connection:连接数据库------------老鼠队伍的先锋部队负责找到玉米地

Command:在数据库中查询----------老鼠队伍的主力部队负责将玉米棒子从植物上掰下来

DataAdapter:建立数据库与显示数据对象之间的桥梁-----------老鼠队伍的运输部队将玉米运回洞里的粮仓里

DataSet:将数据拿出来放到用户看的见的外观空间里-----------老鼠队伍的后勤部队将粮仓里玉米做熟了分给各个小老鼠

增加了SQLhelper作用:将所有关于数据库的操作单独写一个类中,在走不同的业务时都通过调用这个类来访问数据库,提高代码的复用性。SQLhelper是一个组件!
在C#中有组件和控件

控件:可视化对象(比如用户名的输入框,密码输入框)--------控件的面对对象是人
组件:是对象,需要容器(比如SqlHelper类库)-------------------组件的面对对象是编程中的代码

编写满足机房用的SqlHelper类

namespace MySqlHelper
{/// <summary>/// SqlHelper create by zhaofen 2018-8-29/// </summary>class SqlHelper{private string strConn = null;private SqlConnection Conn = null;private SqlCommand Cmd = null;private SqlDataReader SqlSdr = null;public SqlHelper(){//利用反射连接数据库strConn = ConfigurationManager.ConnectionStrings["strConn"].ConnectionString;//strConn = "Data Source=Rancho; Initial Catalog=charge_sys;User Id=sa;Password=123456";Conn = new SqlConnection(strConn);}/// <summary>/// 打开数据库/// </summary>/// <returns>sqlConnection</returns>private SqlConnection GetConn(){if (Conn.State != ConnectionState.Open){try{Conn.Open();}catch (Exception ex){Conn.Dispose();//没有成功打开,释放掉资源,不能不成功还占用资源throw new Exception("打开数据库失败!" + ex.Message);}}return Conn;}/// <summary>/// 执行不带参数的增删改操作/// </summary>/// <param name="CmdText">执行的SQL语句或存储过程</param>/// <param name="CmdType">语句类型</param>/// <returns>返回增删改的操作数</returns>public int ExecuteNonQuery(string CmdText,CommandType CmdType){//数据库连接语句int res;try{Cmd = new SqlCommand(CmdText, GetConn());Cmd.CommandType = CmdType;res = Cmd.ExecuteNonQuery();}catch (Exception ex){throw ex;}finally{if (Conn.State==ConnectionState.Open){Conn.Close();}}return res;}/// <summary>/// 执行带参数的增删改操作/// </summary>/// <param name="CmdText">执行的SQL语句或存储过程</param>/// <param name="parameters">参数</param>/// <param name="CmdType">(SQL语句或存储过程)的类型</param>/// <returns>返回增删改的操作数(受影响的行数)</returns>public int ExecuteNonQuery(string CmdText,SqlParameter[] parameters,CommandType CmdType){int res;try{Cmd = new SqlCommand(CmdText, GetConn()); //先建立SQL语句Cmd.Parameters.AddRange(parameters);      //再匹配参数Cmd.CommandType = CmdType;res = Cmd.ExecuteNonQuery();}catch (Exception ex){throw ex;}finally{if (Conn.State == ConnectionState.Open){Conn.Close();}}return res;}/// <summary>/// 执行不带参数的查询操作/// </summary>/// <param name="CmdText">执行的SQL语句或存储过程</param>/// <param name="CmdType">(SQL语句或存储过程)类型</param>/// <returns>查询后的数据</returns>public DataTable ExecuteQuery(string CmdText,CommandType CmdType){DataTable dt = new DataTable();using (SqlSdr = Cmd.ExecuteReader(CommandBehavior.CloseConnection)){Cmd = new SqlCommand(CmdText, GetConn());Cmd.CommandType = CmdType;dt.Load(SqlSdr);}return dt;}/// <summary>/// 执行带参数的查询/// </summary>/// <param name="CmdText">执行的SQL语句或存储过程</param>/// <param name="parameters">(SQL语句或存储过程)类型</param>/// <param name="CmdType"></param>/// <returns>查询后的数据</returns>public DataTable ExecuteQuery(string CmdText,SqlParameter[]  parameters, CommandType CmdType){DataTable dt = new DataTable();using (SqlSdr=Cmd.ExecuteReader(CommandBehavior.CloseConnection)){Cmd = new SqlCommand(CmdText, GetConn());Cmd.Parameters.AddRange(parameters);Cmd.CommandType = CmdType;dt.Load(SqlSdr);}return dt;}}
}

参考资料

一步步写自己SqlHelper类库(一):ADO.NET简介

一步步写自己SqlHelper类库(二):.NET Framework 数据提供程序

一步步写自己SqlHelper类库(三):连接字符串

一步步写自己SqlHelper类库(四):Connection对象

一步步写自己SqlHelper类库(五):Command对象

一步步写自己SqlHelper类库(六):DataAdapter对象

一步步写自己SqlHelper类库(七):DataSet对象

ADO.NET(完整修改和查询、实体类,数据访问类)

一步一步写自己的SqlHelper类库相关推荐

  1. 一步一步写算法(之图结构)

    原文:一步一步写算法(之图结构) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 图是数据结构里面的重要一章.通过图,我们可以判断两个点之间是 ...

  2. 一步一步写算法(之prim算法 中)

    原文:一步一步写算法(之prim算法 中) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] C)编写最小生成树,涉及创建.挑选和添加过程 MI ...

  3. Python之美[从菜鸟到高手]--一步一步动手给Python写扩展(异常处理和引用计数)

    我们将继续一步一步动手给Python写扩展,通过上一篇我们学习了如何写扩展,本篇将介绍一些高级话题,如异常,引用计数问题等.强烈建议先看上一篇,Python之美[从菜鸟到高手]--一步一步动手给Pyt ...

  4. 手挽手带你学React:四档(上)一步一步学会react-redux (自己写个Redux)

    手挽手带你学React入门四档,用人话教你react-redux,理解redux架构,以及运用在react中.学完这一章,你就可以开始自己的react项目了. 之前在思否看到过某个大神的redux搭建 ...

  5. 一步一步写二叉查找树

     一步一步写二叉查找树 作者:C小加  更新时间:2012-8-9 二叉查找树(BST)是二叉树的一个重要的应用,它在二叉树的基础上加上了这样的一个性质:对于树中的每一个节点来说,如果有左儿子的话,它 ...

  6. 一步一步教你写淡入淡出带注释的图片轮播插件(一)

    前几天在blueIdea上看到一个淡入淡出的带注释的图片轮播效果http://bbs.blueidea.com/thread-2911266-1-1.html看了帖子作者的代码,虽然效果达到了,但是有 ...

  7. 一步一步写算法(之寻找丢失的数)

    一步一步写算法(之寻找丢失的数) 原文:一步一步写算法(之寻找丢失的数) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 假设我们有一个1亿个 ...

  8. 一步一步写算法(之克鲁斯卡尔算法 中)

    一步一步写算法(之克鲁斯卡尔算法 中) 原文:一步一步写算法(之克鲁斯卡尔算法 中) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前面说到 ...

  9. 一步一步写算法(之prim算法 下)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 前两篇博客我们讨论了prim最小生成树的算法,熟悉了基本的流程.基本上来说,我们是按照自上而下 ...

最新文章

  1. IE11 统治浏览器市场 Chrome 终超 Firefox
  2. vue路由中设置linkActiveClass
  3. 计算机指纹识别的原理步骤,指纹识别原理和过程
  4. KMP算法计算next数组 匹配字符串
  5. zzzkkk666用户名密码
  6. 感觉最近有多个机器人给吾博客评论
  7. Linux命令iconv
  8. Java多线程:同步集合与同步锁
  9. phpstudy如何创建mysql_PHPStudy怎样创建数据库
  10. Java使用 PDFBox 从 pdf 中提取图像
  11. 声音文件格式、常见的数字音频格式
  12. 利用Python查询IP地址
  13. 音乐外链php修复版源码
  14. Unity【Bounds Vector3 Cross】- 如何判断一个物体是否在一个凸边体三维区域内
  15. opcode php 缓存,深入理解PHP Opcode缓存原理
  16. 又一所985大学全面改考408!厦门大学计算机考研
  17. laravel-admin 批量操作
  18. shell 循环语句
  19. 本周涨粉一倍,我决定再开源一个商超管理系统
  20. 用Python绘制专业的K线图【含源代码】

热门文章

  1. IDEA中maven的命令及作用
  2. 手动将jar包导入pom依赖,让jar包适配本地maven项目
  3. 三层交换机原理:02怎么用三层交换机?
  4. nvGRAPH API参考分析(二)
  5. NVIDIA® TensorRT™ supports different data formats
  6. 点击事件如何传递到Activity中
  7. Laravel Dcat Admin 安装
  8. window路径和linux路径变换,从linux样式路径转换时,Docker装入的卷将; C添加到Windows路径的末尾...
  9. python 使用import导入不同文件下的文件
  10. VM 下装ubuntu系统