码迷,mamicode.com
首页 > 数据库 > 详细

SqlHelper

时间:2020-03-06 19:46:53      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:关闭   ada   als   使用   实现   null   ret   sys   code   

aa

  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(),
 20          * ExecuteNonQuery()执行成功返回的是一受影响的行数,对于"Create Table"和"Drop Table"语句,返回值是0,
 21          * 而对于其他类型的语句,返回值是-1,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         /* 使用DataSet数据集插入记录,更新数据
 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中,则必须先使用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       

 

SqlHelper

标签:关闭   ada   als   使用   实现   null   ret   sys   code   

原文地址:https://www.cnblogs.com/qq2806933146xiaobai/p/12428061.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!