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 }