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 }