SqlHelper就这么简单

转载 2016年08月28日 19:31:31

一、SqlHelper作用:

SqlHelper用于简化你对数据库重复的操作包括:数据库的连接,数据库的增删改查。

也就是将原本复杂的事情简单化,说白了也就是一个类里面封装了一些方法,而这些方法大部分都是和数据库有关的。

二、SqlHelper的来源:

来源一:目前SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类当然我也没有真正看过她的里面到底有什么。

来源二:那就是我们自己用的,自己来写这个类。


三、简单介绍这个类里面有的方法:

方法1:对于SqlHelper的一个构造方法:

        目的:初始化数据库的连接字符串和Sqlconnection

方法2:获取连接的一个方法

方法3:执行SQL语句增删改或是存储过程

方法4:执行SQL查询语句

总的来说也就是这么多的东西,但是一还要考虑一些其他的东西,比如我上篇文章说的SQL注入的问题这就需要对方法3和方法4进行重构也就是带参数的方法3和方法4.

好了废话不多说了。

四、实践

[html] view plain copy
 print?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. //对数据库进行操作引入命名空间  
  6. using System.Data;  
  7. using System.Data.SqlClient;  
  8. using System.Configuration;  
  9.   
  10.   
  11. namespace DAL  
  12. {  
  13.     public class SQLhelper  
  14.     {  
  15.   
  16.   
  17.         /// 变量定义<summary>  
  18.         /// </summary>  
  19.         private SqlConnection conn = null;  
  20.         private SqlCommand cmd = null;  
  21.         private SqlDataReader sdr = null;  
  22.   
  23.   
  24.   
  25.         /// SQLhelper connStr 字符串的连接<summary>  
  26.         /// </summary>  
  27.         public SQLhelper()  
  28.         {  
  29.             string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;  
  30.             conn = new SqlConnection(connStr);  
  31.   
  32.         }  
  33.   
  34.   
  35.   
  36.         /// 获取conn<summary>  
  37.         /// </summary>  
  38.         /// <returns>为什么要这样写有什么意义呢?</returns>  
  39.         private SqlConnection GetConn()  
  40.         {  
  41.             if (conn.State == ConnectionState.Closed)  
  42.             {  
  43.                 conn.Open();  
  44.             }  
  45.   
  46.             return conn;  
  47.         }  
  48.   
  49.   
  50.   
  51.   
  52.         /// 该方法传入一个增删改SQL语句或是存储过程<summary>  
  53.         /// </summary>  
  54.         /// <param name="sql">要执行的增删改SQL语句或是存储过程</param>  
  55.         /// <returns>返回更新的记录数</returns>  
  56.         public int ExecuteNonQuery(string cmdText,CommandType ct)  
  57.         {  
  58.             //不定义的时候返回的初值是零  
  59.             int res;  
  60.             try  
  61.             {  
  62.               
  63.                 cmd = new SqlCommand(cmdText, GetConn());  
  64.                 cmd.CommandType = ct;  
  65.                 res = cmd.ExecuteNonQuery();  
  66.             }  
  67.             catch (Exception ex)  
  68.             {  
  69.   
  70.                 throw ex;  
  71.             }  
  72.             finally  
  73.             {  
  74.                 if (conn.State == ConnectionState.Open)  
  75.                 {  
  76.                     conn.Close();  
  77.                 }  
  78.   
  79.             }  
  80.   
  81.             return res;  
  82.         }  
  83.   
  84.   
  85.   
  86.   
  87.         /// 执行带参数的增删改语句或是存储过程<summary>  
  88.         /// 执行带参数的增删改语句或是存储过程  
  89.         /// </summary>  
  90.         /// <param name="sql">带参数的SQL语句或是存储过程</param>  
  91.         /// <param name="paras">参数集合</param>  
  92.         /// <returns></returns>  
  93.   
  94.         public int ExecuteNonQuery(string cmdText, SqlParameter[] paras,CommandType ct)  
  95.         {  
  96.             int res;  
  97.             using (cmd = new SqlCommand(cmdText, GetConn()))  
  98.             {  
  99.                 cmd.CommandType = ct;  
  100.                 cmd.Parameters.AddRange(paras);  
  101.                   
  102.                 res = cmd.ExecuteNonQuery();  
  103.             }  
  104.   
  105.   
  106.             return res;  
  107.   
  108.         }  
  109.   
  110.   
  111.   
  112.   
  113.   
  114.         /// 该方法传入一个查询SQL语句或是存储过程<summary>  
  115.         /// 该方法传入一个查询SQL语句或是存储过程  
  116.         /// </summary>  
  117.         /// <param name="cmtText">SQL查询语句或存储过程</param>  
  118.         /// <returns></returns>  
  119.         public DataTable ExecuteQuery(string cmtText,CommandType ct)  
  120.         {  
  121.             DataTable dt = new DataTable();  
  122.             cmd = new SqlCommand(cmtText, GetConn());  
  123.             cmd.CommandType = ct;  
  124.             //关系sdr的同是将会关闭conn  
  125.             using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))  
  126.             {  
  127.                 dt.Load(sdr);  
  128.             }  
  129.             return dt;  
  130.         }  
  131.   
  132.   
  133.         /// 执行带参数的SQL语句或是存储过程<summary>  
  134.         /// 执行带参数的SQL语句或是存储过程  
  135.         /// </summary>  
  136.         /// <param name="cmdText">SQL语句或是存储过程</param>  
  137.         /// <param name="paras"></param>  
  138.         /// <returns></returns>  
  139.         public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras,CommandType ct)  
  140.         {  
  141.             DataTable dt = new DataTable();  
  142.             cmd = new SqlCommand(cmdText, GetConn());  
  143.             cmd.CommandType = ct;  
  144.             cmd.Parameters.AddRange(paras);  
  145.             //关系sdr的同是将会关闭conn  
  146.             using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))  
  147.             {  
  148.                 dt.Load(sdr);  
  149.             }  
  150.             return dt;  
  151.         }  
  152.   
  153.      
  154.     }  
  155.         
  156.          
  157. }  
  158.     

相关文章推荐

SqlHelper就这么简单

一、SqlHelper作用: SqlHelper用于简化你对数据库重复的操作包括:数据库的连接,数据库的增删改查。 也就是将原本复杂的事情简单化,说白了也就是一个类里面封装了一些方法,而这些方法大...
  • lzh1110
  • lzh1110
  • 2012年07月26日 20:13
  • 3046

Spring 3.0就这么简单.zip.002

  • 2017年11月15日 11:30
  • 60MB
  • 下载

Spring 3.0就这么简单

  • 2015年05月27日 22:54
  • 50MB
  • 下载

C#开发微信公众平台-就这么简单(附Demo)

原文:http://www.cnblogs.com/xishuai/p/3625859.html 写在前面 服务号和订阅号URL配置创建菜单查询、删除菜单接受消息发送消息(图文、菜...

Spring 3.0就这么简单part2

  • 2015年05月27日 23:02
  • 50MB
  • 下载

Android APK反编译就这么简单 详解(附图)

在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用...

spring3.0 就这么简单

  • 2014年05月08日 23:31
  • 53.24MB
  • 下载

Wireshark网络分析就这么简单.pdf

  • 2016年05月24日 11:41
  • 10.49MB
  • 下载

Android APK反编译就这么简单 详解(附图)

在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SqlHelper就这么简单
举报原因:
原因补充:

(最多只允许输入30个字)