目录
简述
SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法。SqlHelper用于简化你重复的去写那些数据库接SQLConnection,SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。
SqlHelper 类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。在 SqlHelper 类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用 SqlHelper 类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。
SqlHelper支持多种数据库包括MySql、SqlServer、Oracle、Access数据库,如果数据库是SqlServer,那么你可以使用SqlServerHelper类,如果是MySql,可以使用MySqlHelper,如果是Access,可以使用AccessHelper。如果是Oracle则可以使用OracleHelper类。
解析
- sqlText:需要执行的sql脚本
- parameters:需要的参数集合
- commandParameters:以数组形式提供SqlCommand命令中用到的参数列表
- commandText:存储过程的名字或者 T-SQL 语句
- commandType:SqlCommand命令类型
- connectionString:一个有效的数据库连接字符串
- conn:一个现有的数据库连接
- DataAdapter:适配器
- Command:命令
- SqlCommand:表示允许你制定在数据库上执行的操作
- SqlDataReader:表示数据库读取行方式
- SqlConnection:表示一个到SQL Server数据库的打开的连接
配置项
- 以SQLServer为例 :
<connectionStrings>
<!--SqlServerHelper连接字符串设定-->
<add connectionString="server=.;uid=sa;pwd=123456;database=yourdatabase" name="SqlServerHelper"/>
创建
- 首先创建一个SqlHelper类
public SQLHelper ()
{
//通过这种方式获取配置文件
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
//创建数据库连接
conn = new SqlConnection(connStr);
}
- 创建一个打开链接的方法
private SqlConnection GetConn()
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
return conn;
}
- 封装执行方法
/// <summary>
/// 执行不带参数的增删改SQL语句或存储过程
/// </summary>
/// <param name="cmdText">增删改SQL语句或存储过程</param>
/// <param name="ct">命令类型</param>
/// <returns></returns>
public int ExecuteNonQuery(string cmdText,CommandType ct)
{
int res ;
try
{
cmd = new SqlCommand(cmdText, GetConn());
cmd.CommandType = ct;
res = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
return res;
}
/// <summary>
/// 执行带参数的增删改SQL语句或存储过程
/// </summary>
/// <param name="cmdText">增删改SQL语句或存储过程</param>
/// <param name="paras">参数集合</param>
/// <param name="ct">命令类型</param>
/// <returns></returns>
public int ExecuteNonQuery(string cmdText,SqlParameter [] paras,CommandType ct)
{
int res;
using (cmd = new SqlCommand(cmdText, GetConn ()))
{
cmd.CommandType = ct;
cmd.Parameters.AddRange(paras);
res = cmd.ExecuteNonQuery();
}
return res;
}
/// <summary>
/// 执行查询SQL语句或存储过程
/// </summary>
/// <param name="cmdText">查询SQL语句或存储过程</param>
/// <param name="ct">命令类型</param>
/// <returns></returns>
public DataTable ExcuteQuery(string cmdText, CommandType ct)
{
DataTable dt = new DataTable();
cmd = new SqlCommand(cmdText, GetConn());
cmd.CommandType = ct;
//在执行命令时。如果关闭与之关联的DataReader对象,则关联的connection对象也将关闭(也就是说sdr关闭,conn也会关闭的 )
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
}
/// <summary>
/// 执行带参数查询SQL语句或存储过程
/// </summary>
/// <param name="cmdText">查询SQL语句或存储过程</param>
/// <param name="paras">参数集合</param>
/// <param name="ct">命令类型</param>
/// <returns></returns>
public DataTable ExcuteQuery(string cmdText,SqlParameter[] paras,CommandType ct)
{
DataTable dt = new DataTable();
cmd = new SqlCommand(cmdText, GetConn());
cmd.CommandType = ct;
cmd.Parameters.AddRange(paras);
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
}