设计实现SqlHelper
1、知识点描述
SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法,SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类,后面包含进了Enterprise Library开源包中了。还有一个主要版本是dbhelper.org开源的sqlhelper组件,优点是简洁,高性能,不仅仅支持sqlserver,同时支持sqlserver、oracle、access、Mysql数据库,也是一个开源项目,提供免费下载。
SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。
SqlHelper 类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。在 SqlHelper 类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用 SqlHelper 类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。
2、思维导图
3、示例代码
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
namespace Ex33_ObjectOriented_SqlHelper
{
public class SqlHelper
{
private static SqlCommand GetCommand(string commandText, bool isStoredProcedure, SqlParameter[] sqlParameters)
{
SqlConnection sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = ConfigurationManager.ConnectionStrings["Sql"].ToString();
SqlCommand sqlCommand = sqlConnection.CreateCommand();
sqlCommand.CommandText = commandText;
if (isStoredProcedure)
{
sqlCommand.CommandType = CommandType.StoredProcedure;
}
if (sqlParameters != null)
{
sqlCommand.Parameters.AddRange(sqlParameters);
}
return sqlCommand;
}
public static object Scalar(string commandText,bool isStoredProcedure, SqlParameter[] sqlParameters)
{
object result = null;
using (SqlCommand sqlCommand = GetCommand(commandText, isStoredProcedure, sqlParameters))
{
sqlCommand.Connection.Open();
result = sqlCommand.ExecuteScalar();
sqlCommand.Connection.Close();
}
return result;
}
public static int NonQuery(string commandText, bool isStoredProcedure, SqlParameter[] sqlParameters)
{
int rowAffected = 0;
using (SqlCommand sqlCommand = GetCommand(commandText, isStoredProcedure, sqlParameters))
{
sqlCommand.Connection.Open();
rowAffected = sqlCommand.ExecuteNonQuery();
sqlCommand.Connection.Close();
}
return rowAffected;
}
}
}
四、效果截图