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 }