1、简单说明一下,一般情况下,数据库连接字符串是在App.config文件中进行配置,然后再在代码中进行引用。因此,我们在这里先看一下App.config文件。

首先看需要添加的内容:

参数说明:

name:表示键值,在代码中需要通过这键值来找到对应的连接字符串信息。

connectionString:链接数据库的字符串信息。Server:数据库服务器,Database:数据库,uid:数据库账户名,pwd:数据库密码

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <configuration>
  3. <startup>
  4. <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  5. </startup>
  6. <!--这个写数据库链接配置信息,自己手动添加,严格区分大小写-->
  7. <connectionStrings>
  8. <add name="mssql" connectionString="Server=.;Database=db_test;uid=sa;pwd=123456"/>
  9. </connectionStrings>
  10. <!--这个写数据库链接配置信息,自己手动添加,严格区分大小写-->
  11. </configuration>

2、接下就是代码了,介绍都在注释里,直接看代码吧。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Configuration;
  7. using System.Data.SqlClient;
  8.  
  9. namespace SQLHelper
  10. {
  11. /// <summary>
  12. /// 为了方便调用,一般将SqlHelper类写为静态类
  13. /// </summary>
  14. public static class SqlHelper
  15. {
  16. //需要添加引用--框架,System.Configuration,添加再using
  17. private static readonly string conStr = ConfigurationManager.ConnectionStrings["mssql"].ConnectionString;
  18. /// <summary>
  19. /// 封装增加、删、改方法,方法名可以随便写,但是为了方便查看,用了和SqlCommand类一一样的方法名
  20. /// </summary>
  21. /// <param name="sql">SQL语句</param>
  22. /// <param name="pms">SQL参数,因为不知道会有多少个参数,所以用可变参数params</param>
  23. /// <returns>受影响的行数</returns>
  24. public static int ExecuteNonQuery(string sql, params SqlParameter[] pms)
  25. {
  26.  
  27. using (SqlConnection conn = new SqlConnection(conStr))
  28. {
  29. using (SqlCommand cmd = new SqlCommand(sql, conn))
  30. {
  31. if (pms != null)
  32. {
  33. cmd.Parameters.AddRange(pms);
  34. }
  35. conn.Open();
  36.  
  37. return cmd.ExecuteNonQuery();
  38. }
  39. }
  40.  
  41. }
  42.  
  43. /// <summary>
  44. /// 查询单个结果,一般和聚合函数 一起使用
  45. /// </summary>
  46. /// <param name="sql">查询的SQL语句</param>
  47. /// <param name="pms">SQL参数</param>
  48. /// <returns>返回查询对象,查询结果第一行第一列</returns>
  49. public static object ExecuteScalar(string sql, params SqlParameter[] pms)
  50. {
  51.  
  52. using (SqlConnection conn = new SqlConnection(conStr))
  53. {
  54. using (SqlCommand cmd = new SqlCommand(sql, conn))
  55. {
  56. if (pms != null)
  57. {
  58. cmd.Parameters.AddRange(pms);
  59. }
  60. conn.Open();
  61.  
  62. return cmd.ExecuteScalar();
  63. }
  64. }
  65.  
  66. }
  67.  
  68. /// <summary>
  69. /// 查询多行
  70. /// </summary>
  71. /// <param name="sql">SQL语句</param>
  72. /// <param name="pms">SQL参数</param>
  73. /// <returns>返回SqlDataReader对象</returns>
  74. public static SqlDataReader ExcuteReader(string sql, params SqlParameter[] pms)
  75. {
  76.  
  77. //这里不能用using,不然在返回SqlDataReader时候会报错,因为返回时候已经在using中关闭了。
  78. //事实上,在使用数据库相关类中,SqlConnection是必须关闭的,但是其他可以选择关闭,因为CG回自动回收
  79. SqlConnection conn = new SqlConnection(conStr);
  80. using (SqlCommand cmd = new SqlCommand(sql, conn))
  81. {
  82. if (pms != null)
  83. {
  84. cmd.Parameters.AddRange(pms);
  85. }
  86. try
  87. {
  88. conn.Open();
  89. //传入System.Data.CommandBehavior.CloseConnection枚举是为了让在外面使用完毕SqlDataReader后,只要关闭了SqlDataReader就会关闭对应的SqlConnection
  90. return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
  91. }
  92. catch
  93. {
  94. conn.Close();
  95. conn.Dispose();
  96. throw;
  97. }
  98. }
  99. }
  100. }
  101. }

C#封装CRUD到SqlHelper类解读的更多相关文章

  1. JAVA WEB SQLHelper类的封装

    在这次做项目中,我对自己最满意的就是封装了一下SQLHelper类,我对自己感到骄傲主要是 我是初学者,我刚开始不知道可以这样做,我只是想着试着去这样做了,结果真的可以,所以我 在我的模块就自己封装了 ...

  2. 【转载】微软官方提供的Sqlserver数据库操作帮助类SQLHelper类

    在.NET平台中,C#语言一般使用ADO.NET组件来操作Sqlserver数据库,通过ADO.NET组件可以实现连接数据库.查询数据集.执行SQL语句以及关闭数据库连接等操作,为此网上有很多开发者自 ...

  3. 为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?

    既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的 ...

  4. ADO.NET复习——自己编写SqlHelper类

    今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题 ...

  5. 【Android】19.3 ContentProvider及安卓进一步封装后的相关类

    分类:C#.Android.VS2015: 创建日期:2016-03-08 一.简介 ContentProvider:内容提供程序. Android的ContentProvider与.NET框架的EF ...

  6. 微软官方SqlHelper类 数据库辅助操作类

    数据库操作类真的没有必要自己去写,因为成熟的类库真的非常完善了,拿来直接用就好,省时省力. 本文就为大家介绍微软官方的程序PetShop4.0中的SqlHelper类,先来做一下简单的介绍,PetSh ...

  7. Mybatis学习之自定义持久层框架(五) 自定义持久层框架:封装CRUD操作

    前言 上一篇文章我们完成了生产sqlSession的工作,与数据库的连接和创建会话的工作都已完成,今天我们可以来决定会话的内容了. 封装CRUD操作 首先我们需要创建一个SqlSession接口类,在 ...

  8. Android RecyclerView单击、长按事件:基于OnItemTouchListener +GestureDetector标准实现(二),封装抽取成通用工具类

     Android RecyclerView单击.长按事件:基于OnItemTouchListener +GestureDetector标准实现(二),封装抽取成通用工具类 我写的附录文章2,介绍了 ...

  9. 最新的SqlHelper 类

    最新的SqlHelper 类 摘自:http://www.cnblogs.com/sufei/archive/2010/01/14/1648026.html using System; using S ...

随机推荐

  1. zhly

    5. 百叶002 名字2008 1.新浪   阿里矢量图库账号 15031116087 名字2008 2.acdsee 账号  1173209945  同密码一样 3.zhly   我的名字2016 ...

  2. 关于angular路由中的#

    http://localhost:3000/#/app/order/list 这个路由我们看到一个#,这个#代表,后边不论是有多少后缀,我们的和后台请求的时候都是一个界面. 所以说用angular的时 ...

  3. 微信开放接口获取用户昵称保存到MySQL中为空白

    微信昵称中包含emoji表情标签,某些标签是使用了4字节编码的UTF8. 而大多数MySQL数据库现在使用的是3字节UTF8编码,这样会导致保存为空,且不会提示失败. 解决方法有2个,一个是升级到My ...

  4. 使用Blob获取图片并二进制显示实例页面

    HTML代码: <div id="forAppend" class="demo"></div> JS代码: var eleAppend ...

  5. LightOJ - 1079 概率dp

    题意:n个银行,每个有价值和被抓概率,要求找被抓概率不超过p的最大价值 题解:dp[i][j]表示前i个取j价值的所需最小概率,01背包处理,转移方程dp[i][j]=min(dp[i-1][j],d ...

  6. hzau 1206 MathematicalGame

    1206: MathematicalGame Time Limit: 2 Sec  Memory Limit: 1280 MBSubmit: 124  Solved: 15[Submit][Statu ...

  7. 条款39:明智的使用private继承

    首先看一下private继承的法则:class之间的继承关系如果是private的话,那么编译器不会将一个derived对象自动当作为一个base class对象. 从base class继承而来的所 ...

  8. 用TCP穿透NAT(TCP打洞)的实现

    目录 TCP穿透原理 程序思路 声明 上代码 运行示例 1. TCP穿透原理: 我们假设在两个不同的局域网后面分别有2台客户机A和 B,AB所在的局域网都分别通过一个路由器接入互联网.互联网上有一台服 ...

  9. UFLDL新版教程

    http://ufldl.stanford.edu/tutorial/ 还带编程作业.

  10. Zabbix配置微信报警通知

    Zabbix告警可以通过邮件,微信,电话,短信等方式发送告警消息. 电话和短信需要向运营商购买相应的网关,需要付费: 邮件和微信是免费的,可以根据业务需要选择相应的告警模式 Zabbix版本:3.2 ...