实例:通过企业库Microsoft.Practices.EnterpriseLibrary,在System.Data.DbCommand对象中内置存储对象
步骤:
1、添加企业库的dll文件:Microsoft.Practices.EnterpriseLibrary.Data.DLL....,需自己从网上下
2、例子为通过 Microsoft.Practices.EnterpriseLibrary.Data.Database中含有的方法,在DbCommand实现了ASP调用存储过程很好的封装,最终返回一个内置存储调用的DBCommand方法。
3、例子供大家学习
public class DBCommand
{
//企业数据库对象
private static Microsoft.Practices.EnterpriseLibrary.Data.Database db;
//内置存储过程对象
private readonly System.Data.Common.DbCommand dbCommand;
/// <summary>
/// 创建企业数据库对象
/// </summary>
private static void CreateDataBase()
{
DBCommand.db = DatabaseFactory.CreateDatabase("Data Source=(local);Initial Catalog=chenyun;Integrated Security=True");
}
/// <summary>
/// 实例化存储过程对象
/// </summary>
/// <param name="dbCommandNameOrSqlString">存储过程名</param>
public DBCommad(string dbCommandNameOrSqlString)
{
if (db == null)
CreateDataBase();
dbCommand = db.GetStoredProcCommand(dbCommandNameOrSqlString);
}
/// <summary>
/// 创建存储过程
/// </summary>
/// <param name="dbCommandName">存储过程名</param>
/// <returns>数据库命令对象</returns>
public static DBCommand CreateStoredProcCommand(string dbCommandName)
{
var cmd = new DBCommand(dbCommandName);
return cmd;
}
#region 为存储过程添加参数
/// <summary>
/// 增加输入参数
/// </summary>
/// <param name="paraName">参数名</param>
/// <param name="paraDbType">参数类型</param>
/// <param name="paraValue">参数值</param>
public void AddInParameter(string paraName, DbType paraDbType, object paraValue)
{
db.AddInParameter(this.dbCommand, paraName, paraDbType, paraValue);
}
/// <summary>
/// 增加输出参数
/// </summary>
/// <param name="paraName">参数名</param>
/// <param name="paraDbType">参数类型</param>
/// <param name="size">参数大小</param>
public void AddOutParameter(string paraName, DbType paraDbType, int size)
{
db.AddOutParameter(this.dbCommand, paraName, paraDbType, size);
}
#endregion
#region 执行存储过程并返回结果的方法
/// <summary>
/// 执行存储过程返回DbDataReader结果
/// </summary>
/// <returns>结果读取器</returns>
public IDataReader ExecuteReader()
{
try
{
return DBCommand.db.ExecuteReader(this.dbCommand);
}
catch
{
CreateDataBase();
return DBCommand.db.ExecuteReader(this.dbCommand);
}
}
#endregion
}