1.配置文件

1   <connectionStrings>
2     <add name="constr" connectionString="Data Source=.;Initial Catalog=NovelDitle;Integrated Security=True"/>
3   </connectionStrings>

2.静态类 命名空间的引入等 

这里我只写了主要要用到的命名空间

1 using System.Configuration;
2 using System.Data;
3 using System.Data.SqlClient;

 

3.私有连接字符串 全局变量

//私有连接字符串 
       private static string conStr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;

4.写静态方法

这里的三个参数分别指的是:sql语句 存储过程 可变参数(防sql注入)

①//离线查询 返回datatable

 1     public static DataTable ExecuteDataTable(string sql,CommandType cmdType, params SqlParameter[] par)
 2         {
 3             //datatable对象
 4             DataTable dt = new DataTable();
 5 
 6             //用于处理非托管对象。某些类型的非托管对象有数量限制或很消耗系统资源。为了及时释放资源,使用using语句可以确保这些资源适当地处置(dispose)
 7             using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr))
 8             {
 9                 //存储过程赋值
10                 adapter.SelectCommand.CommandType = cmdType;
11                 //判断参数不为空 长度>0
12                 if (par != null)
13                 {
14                     //向数组参数中添加值
15                     adapter.SelectCommand.Parameters.AddRange(par);
16                 }
17                 //填充数据
18                 adapter.Fill(dt);
19                 return dt;//返回值
20             }
21         }

②//在线查询,返回SqlDataReader

 1  public static SqlDataReader ExecuteDataReader(string sql,CommandType cmdType, params SqlParameter[] par)
 2         {
 3             //SqlConnection要始终保持打开状态 不能使用using释放资源
 4             SqlConnection conn = new SqlConnection(conStr);
 5             
 6             using (SqlCommand com = new SqlCommand(sql, conn))
 7             {
 8                 //存储过程赋值
 9                 com.CommandType = cmdType;
10 
11                 //判断参数不为空
12                  if (par != null)
13                  {
14                     //传入参数
15                      com.Parameters.AddRange(par);
16                  }
17                 try
18                 {
19                     //如果连接状态关闭
20                     if (conn.State==ConnectionState.Closed)
21                     {
22                         //打开连接
23                         conn.Open();
24                     }
25                     //返回结果  参数:当关闭reader时也关闭SqlConnection
26                     return com.ExecuteReader(CommandBehavior.CloseConnection);
27                 }
28                 catch (Exception)
29                 {
30                     //关闭连接
31                     conn.Close();
32                     //释放资源
33                     conn.Dispose();
34                     throw;//抛出异常
35                 }     
36             }
37         }

③增删改操作

 1  public static int ExecuteNonQuery(string sql,CommandType cmdType,params SqlParameter[] par)
 2         {
 3             using (SqlConnection conn = new SqlConnection(conStr))
 4             {
 5                 using (SqlCommand com=new SqlCommand(sql,conn))
 6                 {
 7                     com.CommandType = cmdType;
 8 
 9                     if (par!=null)
10                     {
11                         com.Parameters.AddRange(par);
12                     }
13                     conn.Open();
14 
15                     return  com.ExecuteNonQuery();
16                 }
17             }
18         }

④返回单个值

 1  public static object ExecuteScalar(string sql,CommandType cmdType,params SqlParameter[] par)
 2         {
 3             using (SqlConnection conn = new SqlConnection(conStr))
 4             {
 5                 using (SqlCommand com = new SqlCommand(sql, conn))
 6                 {
 7                     com.CommandType = cmdType;
 8 
 9                     if (par != null)
10                     {
11                         com.Parameters.AddRange(par);
12                     }
13                     conn.Open();
14 
15                     return com.ExecuteScalar();
16                 }
17             }
18         }