SqlHelper工具类中用到的主要方法
1、第一个方法,主要是为了实例化数据库提供程序和链接串,进行帮助类的实例化及DbConnection对象的实例化。
/// <summary>
/// 根据数据库链接串和数据库提供程序名称两个参数进行初始化此对象实例
/// </summary>
/// <param name="connectionString">数据库连接配置字符串</param>
/// <param name="providerName">数据库提供程序的名称</param>
public SqlHelper(string connectionString, string providerName)
{
if (!string.IsNullOrEmpty(providerName))
{
this._dbFactory = SqlHelper.CreateDbProviderFactory(providerName); //创建默认配置的数据库提供程序
}
else
{
throw new ArgumentNullException("providerName", "数据库提供程序名称参数值不能为空,请在配置文件中配置该项值!");
}
if (!string.IsNullOrEmpty(connectionString))
{
this._dbConnection = SqlHelper.CreateDbConnection(connectionString, providerName); //创建当前数据库链接对象
}
else
{
throw new ArgumentNullException("connectionString", "数据库链接串参数值不能为空,请在配置文件中配置该项值!");
}
//保存当前连接字符串和数据库提供程序名称
this._dbConnectionString = connectionString;
this._dbProviderName = providerName;
}

2、第二个方法,主要是根据数据库连接字符串参数来创建数据库链接.
/// <summary>
/// 根据数据库连接字符串参数来创建数据库链接.
/// </summary>
/// <param name="connectionString">数据库连接配置字符串</param>
/// <param name="dbProviderName">数据库提供程序的名称</param>
/// <returns></returns>
public static DbConnection CreateDbConnection(string connectionString, string dbProviderName)
{
DbProviderFactory dbFactory = SqlHelper.CreateDbProviderFactory(dbProviderName);
DbConnection dbConn = dbFactory.CreateConnection();
dbConn.ConnectionString = connectionString;
return dbConn;
}

3、第三个方法,主要是根据SQL语句来构建当前数据库链接的DbCommand对象。
public DbCommand GetSqlStringCommond(string sqlQuery)
{
DbCommand dbCmd = this._dbConnection.CreateCommand();
dbCmd.CommandText = sqlQuery;
dbCmd.CommandType = CommandType.Text;
return dbCmd;
}

4、第四个方法,主要是创建DbDataReader数据对象。
public DbDataReader ExecuteReader(DbCommand cmd)
{
if (cmd != null && cmd.Connection != null)
{
if (cmd.Connection.State != ConnectionState.Open)
{
cmd.Connection.Open();
}
DbDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); //当reader读取结束时自动关闭数据库链接
return reader;
}
return null;
}

5、第五个方法,执行相应的命令,返回影响的数据记录数。
public int ExecuteNonQuery(DbCommand cmd)
{
if (cmd != null && cmd.Connection != null)
{
if (cmd.Connection.State != ConnectionState.Open)
{
cmd.Connection.Open();
}
int retVal = cmd.ExecuteNonQuery();
cmd.Connection.Close();
return retVal;
}
return -1;
}

6、第六个方法,执行相应的命令,返回结果集中的第一行第一列的值,如果不成功则返回null值。
public object ExecuteScalar(DbCommand cmd)
{
if (cmd != null && cmd.Connection != null)
{
if (cmd.Connection.State != ConnectionState.Open)
{
cmd.Connection.Open();
}
object retVal = cmd.ExecuteScalar();
cmd.Connection.Close();
return retVal;
}
return null;
}

7、第七个方法,主要是执行相应的命令,返回一个DataSet数据集合。
public DataSet ExecuteDataSet(DbCommand cmd)
{
DataSet ds = new DataSet();
if (cmd != null)
{
DbDataAdapter dbDataAdapter = this._dbFactory.CreateDataAdapter();
dbDataAdapter.SelectCommand = cmd;
dbDataAdapter.Fill(ds);
}
return ds;
}

8、第八个方法,主要是执行相应的命令,返回一个DataTable数据集合。
public DataTable ExecuteDataTable(DbCommand cmd)
{
DataTable dataTable = new DataTable();
if (cmd != null)
{
DbDataAdapter dbDataAdapter = this._dbFactory.CreateDataAdapter();
dbDataAdapter.SelectCommand = cmd;
dbDataAdapter.Fill(dataTable);
}
return dataTable;
}
