SQLHelper -

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Data.SqlClient;
  6 using System.Data;
  7 using System.Configuration;
  8 
  9 namespace 通过sqlhelper实现登录
 10 {
 11     //因为以后这些方法要直接使用,不需要再实例化 所以使用静态类
 12     public static class SqlHelper
 13     {
 14         /// <summary>
 15         /// 拿到连接字符串//读取配置文件,首先要添加windows.Configuration的引用
 16         /// </summary>
 17         /// readonly 只读变量 运行的时候才能给它赋值,一旦给它赋值以后除了在类的构造函数里面以外,绝对不能再给它改值了
 18         private static readonly string connStr = ConfigurationManager.ConnectionStrings["xudaxia"].ConnectionString;
 19 
 20         //封装常用方法
 21 
 22         //1.执行Insert/delete/update的方法
 23         //参数1 执行的sql语句  参数2:执行的类型 参数3:不论是存储过程还是带参数的sql语句都有可能带多个参数或无参  所以使用可变参数
 24         //ExecuteNonQuery这个方法执行会返回要数据库中所影响的行数,是返回的如果大于0就成功。
 25         public static int ExecuteNonQuery(string sql, CommandType cmdType, params SqlParameter[] pms)
 26         {
 27             using (SqlConnection con = new SqlConnection(connStr))
 28             {
 29                 using (SqlCommand cmd = new SqlCommand(sql, con))
 30                 {
 31                     //设置当前执行的是存储过程还是带参数的sql语句
 32                     cmd.CommandType = cmdType;
 33                     //cmd.Parameters.AddRange(pms);
 34                     //判断如果用户传过来的数组是null 就不自动加 如果不是 就加
 35                     if (pms != null)
 36                     {
 37                         cmd.Parameters.AddRange(pms);
 38                     }
 39                     con.Open();
 40                     return cmd.ExecuteNonQuery();
 41                 }
 42             }
 43         }
 44 
 45         //2.执行返回单个值的方法
 46         //ExecuteScalar:执行查询,并返回查询所返回的结果集中第一行的第一列或空引用(如果结果集为空).忽略其他列或行.
 47         public static object ExecuteScalar(string sql, CommandType cmdType, params SqlParameter[] pms)
 48         {
 49             using (SqlConnection con = new SqlConnection(connStr))
 50             {
 51                 using (SqlCommand cmd = new SqlCommand(sql, con))
 52                 {
 53                     //设置当前执行的是存储过程还是带参数的sql语句
 54                     cmd.CommandType = cmdType;
 55                     // cmd.Parameters.AddRange(pms);
 56                     //判断如果用户传过来的数组是null 就不自动加 如果不是 就加
 57                     if (pms != null)
 58                     {
 59                         cmd.Parameters.AddRange(pms);
 60                     }
 61                     con.Open();
 62                     return cmd.ExecuteScalar();
 63                 }
 64             }
 65         }
 66 
 67         //3.返回SqlDataReader的方法
 68         //DataReader是一行一行的读取记录的。当记录中有数据时Read()返回TRUE,当到记录集底部时返回FALSE。
 69         public static SqlDataReader ExecuteReader(string sql, CommandType cmdType, params SqlParameter[] pms)
 70         {
 71 
 72             SqlConnection con = new SqlConnection(connStr);
 73 
 74             using (SqlCommand cmd = new SqlCommand(sql, con))
 75             {
 76                 cmd.CommandType = cmdType;
 77                 if (pms != null)
 78                 {
 79                     cmd.Parameters.AddRange(pms);
 80                 }
 81                 try
 82                 {
 83                     con.Open();
 84                     return cmd.ExecuteReader(CommandBehavior.CloseConnection);
 85                 }
 86                 catch
 87                 {
 88                     con.Close();
 89                     con.Dispose();
 90                     throw;
 91                 }
 92 
 93             }
 94         }
 95 
 96         //4.返回DataTable
 97         public static DataTable ExecuteDataTable(string sql, CommandType cmdType, params SqlParameter[] pms)
 98         {
 99             DataTable dt = new DataTable();
100             using (SqlDataAdapter adapter = new SqlDataAdapter(sql, connStr))
101             {
102                 adapter.SelectCommand.CommandType = cmdType;
103                 if (pms != null)
104                 {
105                     adapter.SelectCommand.Parameters.AddRange(pms);
106                 }
107                 adapter.Fill(dt);
108                 return dt;
109             }
110         }
111     }
112 }

 

posted @ 2014-05-23 10:25  许大虾  阅读(217)  评论(0编辑  收藏  举报