1.配置文件
<connectionStrings>
<add name="constr" connectionString="Data Source=.;Initial Catalog=NovelDitle;Integrated Security=True"/>
</connectionStrings>
2.静态类 命名空间的引入等
这里我只写了主要要用到的命名空间
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
3.私有连接字符串 全局变量
//私有连接字符串
private static string conStr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
4.写静态方法
这里的三个参数分别指的是:sql语句 存储过程 可变参数(防sql注入)
①//离线查询 返回datatable
public static DataTable ExecuteDataTable(string sql,CommandType cmdType, params SqlParameter[] par)
{
//datatable对象
DataTable dt = new DataTable(); //用于处理非托管对象。某些类型的非托管对象有数量限制或很消耗系统资源。为了及时释放资源,使用using语句可以确保这些资源适当地处置(dispose)
using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr))
{
//存储过程赋值
adapter.SelectCommand.CommandType = cmdType;
//判断参数不为空 长度>0
if (par != null)
{
//向数组参数中添加值
adapter.SelectCommand.Parameters.AddRange(par);
}
//填充数据
adapter.Fill(dt);
return dt;//返回值
}
}
②//在线查询,返回SqlDataReader
public static SqlDataReader ExecuteDataReader(string sql,CommandType cmdType, params SqlParameter[] par)
{
//SqlConnection要始终保持打开状态 不能使用using释放资源
SqlConnection conn = new SqlConnection(conStr); using (SqlCommand com = new SqlCommand(sql, conn))
{
//存储过程赋值
com.CommandType = cmdType; //判断参数不为空
if (par != null)
{
//传入参数
com.Parameters.AddRange(par);
}
try
{
//如果连接状态关闭
if (conn.State==ConnectionState.Closed)
{
//打开连接
conn.Open();
}
//返回结果 参数:当关闭reader时也关闭SqlConnection
return com.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception)
{
//关闭连接
conn.Close();
//释放资源
conn.Dispose();
throw;//抛出异常
}
}
}
③增删改操作
public static int ExecuteNonQuery(string sql,CommandType cmdType,params SqlParameter[] par)
{
using (SqlConnection conn = new SqlConnection(conStr))
{
using (SqlCommand com=new SqlCommand(sql,conn))
{
com.CommandType = cmdType; if (par!=null)
{
com.Parameters.AddRange(par);
}
conn.Open(); return com.ExecuteNonQuery();
}
}
}
④返回单个值
public static object ExecuteScalar(string sql,CommandType cmdType,params SqlParameter[] par)
{
using (SqlConnection conn = new SqlConnection(conStr))
{
using (SqlCommand com = new SqlCommand(sql, conn))
{
com.CommandType = cmdType; if (par != null)
{
com.Parameters.AddRange(par);
}
conn.Open(); return com.ExecuteScalar();
}
}
}