zoukankan      html  css  js  c++  java
  • SqlHelper-MSSql

    SqlHelper工具类

      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 using System.Data;
      9 
     10 namespace DAL
     11 {
     12     public class SqlHelper
     13     {
     14         // 连接字符串
     15         private static readonly string str = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
     16 
     17 
     18         /* 返回的是受影响的行数
     19          * ExecuteNonQuery()通常情况下为数据库事务处理的首选,当需要执行插入,删除,修改等操作时,首选ExecuteNonQuery(),不适用于Selete语句,返回永远是-1
     20          * ExecuteNonQuery()执行成功返回的是一受影响的行数,对于"Create Table"和"Drop Table"语句,返回值是0,
     21          * ExecuteNonQuery()操作数据时,可以不使用DataSet直接更改数据库中的数据。
     22          */
     23         public static int ExecuteNonQuery(string sql, params SqlParameter[] ps)
     24         {
     25             using (SqlConnection con = new SqlConnection(str))
     26             {
     27                 using (SqlCommand cmd = new SqlCommand(sql, con))
     28                 {
     29                     if (ps != null)
     30                     {
     31                         cmd.Parameters.AddRange(ps);
     32                     }
     33                     con.Open();
     34                     return cmd.ExecuteNonQuery();
     35                 }
     36             }
     37         }
     38 
     39         /* ExecuteScalar()方法也可以用来执行SQL语句,但是executescalar()执行SQL语句后返回值与ExecuteNonQuery()并不相同,
     40          * ExecuteNonQuery()操作后返回的是一个值,而executescalar()操作后则会返回一个对象(object),
     41          * 如果执行的SQL语句是查询语句,则返回结果是查询后的第一行第一列,
     42          * 如果执行的SQL语句不是一个查询语句,则会返回一个未实例化的对象,必须通过类型装换来显示。
     43          * 
     44          * executescalar()经常使用当需要返回单一值时的情况。例如当插入一条数据信息时,
     45          * 需要马上知道刚才插入的值,则可以使用executescalar()方法。
     46          */
     47         public static object ExecuteScalar(string sql, params SqlParameter[] ps)
     48         {
     49             using (SqlConnection con = new SqlConnection(str))
     50             {
     51                 using (SqlCommand cmd = new SqlCommand(sql, con))
     52                 {
     53                     if (ps != null)
     54                     {
     55                         cmd.Parameters.AddRange(ps);
     56                     }
     57                     con.Open();//打开数据库
     58                     return cmd.ExecuteScalar();
     59                 }
     60             }
     61         }
     62 
     63         /* 快速查询
     64          * ExecuteReader比DataSet而言,DataReader具有较快的访问能力,并且能够使用较少的服务器资源。
     65          * DataReader对象提供了游标形式的读取方式,当从结果行中读取了一行,则游标会继续读取到下一行。
     66          * 通过read方法可以判断数据是否还有下一行,如果存在数据,则继续运行返回true,如果没有数据,则返回false。
     67          */
     68         public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] ps)
     69         {
     70             SqlConnection con = new SqlConnection(str);
     71             using (SqlCommand cmd = new SqlCommand(sql, con))
     72             {
     73                 if (ps != null)
     74                 {
     75                     cmd.Parameters.AddRange(ps);
     76                 }
     77                 try
     78                 {
     79                     con.Open();
     80                     return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);//关闭关联的connection
     81                 }
     82                 catch (Exception ex)
     83                 {
     84                     con.Close();
     85                     con.Dispose();
     86                     throw ex;
     87                 }
     88 
     89             }
     90 
     91         }
     92 
     93         /* 通用查询方法
     94          * 为了将数据库的数据填充到dataset中,则必须先使用adapter对象的方法实现填充,当数据填充完成后,
     95          * 开发人员可以将记录添加到dataset对象中,然后使用update方法将数据插入到数据库中。
     96          */
     97         public static DataSet SqlDataSet(string sql, DataSet ds, string tableName, params SqlParameter[] ps)
     98         {
     99             using (SqlConnection con = new SqlConnection(str))
    100             {
    101 
    102                 using (SqlDataAdapter da = new SqlDataAdapter(sql, con))
    103                 {
    104                     if (ps != null)
    105                     {
    106                         da.SelectCommand.Parameters.AddRange(ps);
    107                     }
    108                     con.Open();
    109                     ds.Clear();
    110                     
    111                     da.Fill(ds,tableName);
    112 
    113                     return ds;
    114                 }
    115             }
    116         }
    117 
    118         /*使用DataSet数据集更新数据
            *为了将数据库的数据填充到dataset中,则必须先使用adapter对象的方法实现填充,
    119          */
    120         public static int SqlDataAdapter(string sql, DataSet ds, string tableName, params SqlParameter[] ps)
    121         {
    122             using (SqlConnection con = new SqlConnection(str))
    123             {
    124                 using (SqlDataAdapter sa = new SqlDataAdapter(sql, con))
    125                 {
    126                     SqlCommandBuilder builder = new SqlCommandBuilder(sa);
    127 
    128                     return sa.Update(ds, tableName);
    129                 }
    130             }
    131         }
    132     }
    133 }
    134       
    365个夜晚,我希望做到两天更一篇博客。加油,小白!
  • 相关阅读:
    .Net关闭数据库连接时判断ConnectionState为Open还是Closed?
    Excel里生成GUID
    Convert.ChangeType不能处理Nullable类型的解决办法
    xml编辑无提示?这么破!
    如何往eclipse中导入maven项目
    巧用浏览器F12调试器定位系统前后端bug
    Web自动化selenium技术快速实现爬虫
    Git一分钟系列--快速安装git客户端
    web自动化原理揭秘
    Web自动化测试环境搭建1(基于firefox火狐浏览器)
  • 原文地址:https://www.cnblogs.com/qq2806933146xiaobai/p/12428061.html
Copyright © 2011-2022 走看看