//静态类无法实例化
//静态类可以用作只对输入参数进行操作并且不必获取或设置任何内部实例字段的方法集的方便容器
//静态类的类型信息在引用该类的程序时加载,静态构造函数只调用一次,静态类会保存在内存中
//只包含静态成员
//无法进行实例化
//会进行密封,不能继承
//不能包含实例构造函数
static class SqlHelper
//连接字符串
private static readonly string constr = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
#region ExecuteNonQuery返回受影响的行数,增加、修改、删除
public static int ExecuteNonQuery(string sql, params SqlParameter[] pms)
{
using (SqlConnection conn = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
conn.Open();
//ExecuteNonQuery返回受影响的行数,增加、修改、删除
return cmd.ExecuteNonQuery();
}
}
}
#endregion
#region 执行查询,返回第一行第一列
public static object ExecuteScalar(string sql, params SqlParameter[] pms)
{
using (SqlConnection conn = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
conn.Open();
//执行查询,返回第一行第一列
return cmd.ExecuteScalar();
}
}
}
#endregion
#region 流方式读取数据
public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] pms)
{
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
try
{
con.Open();
return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
catch (Exception e)
{
con.Close();
con.Dispose();
throw e;
}
}
}
}
#endregion
#region 表格方式读取数据
public static DataTable ExecuteDataTable(string sql, params SqlParameter[] pms)
{
using (SqlDataAdapter adapter = new SqlDataAdapter(sql, constr))
{
if (pms != null)
{
adapter.SelectCommand.Parameters.AddRange(pms);
}
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
}
}
#endregion
}
}
================================================================
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="sql" connectionString="Data Source=LONG-PC;Initial Catalog=TestDb;Integrated Security = True;"/>
</connectionStrings>
</configuration>