共享一个数据库帮助器
Ivony 2006-02-28 01:41:08 关于事务方面的代码还在修改完善中,也许不会那样做,但是有很多功能已经很成熟了,自己觉得比那个什么糟糕的SqlHelper还是好多了。
给分的原则,mark最多2分,顶、up、接分、JF等无分。
批评和建设性意见酌情给分。
====DbUtility.cs====
namespace Ivony.Data
{
public abstract class DbUtility
{
#region 抽象方法
/// <summary>
/// 由派生类实现,创建IDbCommand对象
/// </summary>
/// <param name="newConnection">指定是否同时创建新的数据库连接对象</param>
protected abstract IDbCommand CreateCommand( bool newConnection );
/// <summary>
/// 由派生类实现,创建IDataAdapter对象
/// </summary>
/// <param name="selectCommand">查询命令</param>
protected abstract IDataAdapter CreateDataAdapter( IDbCommand selectCommand );
/// <summary>
/// 由派生类实现,创建IDataParameter对象
/// </summary>
/// <param name="name">参数名</param>
/// <param name="value">参数值</param>
protected abstract IDataParameter CreateParameter( string name, object value );
#endregion
protected bool _alwaysCreateConnection = true;
/// <summary>
/// 指示是否总是创建新的连接
/// </summary>
public virtual bool AlwaysCreateConnection
{
get { return _alwaysCreateConnection; }
set { _alwaysCreateConnection = value; }
}
protected bool _hideConnection;
/// <summary>
/// 指示是否已经将数据库连接隐藏,即Connection等属性不可用。
/// </summary>
public bool HideConnection
{
get { return _hideConnection; }
}
private CommandParserOptions _parserOptions;
/// <summary>
/// 设定命令解释器的参数
/// </summary>
public CommandParserOptions ParserOptions
{
get { return _parserOptions; }
set { _parserOptions = value; }
}
#region IDbUtility Members
/// <summary>
/// 填充DataSet,并将填充的最后一个表返回
/// </summary>
/// <param name="commandText">查询字符串模板</param>
/// <param name="parameters">查询字符串参数</param>
/// <returns></returns>
public virtual DataTable ExecuteData( string commandText, params object[] parameters )
{
return ExecuteData( null, null, commandText, parameters );
}
/// <summary>
/// 填充DataSet,并将填充的最后一个表返回
/// </summary>
/// <param name="dataSet">需要被填充的数据集</param>
/// <param name="tableName">将最后一个表设置为什么名字</param>
/// <param name="commandText">查询字符串模板</param>
/// <param name="parameters">查询字符串参数</param>
/// <returns></returns>
public virtual DataTable ExecuteData( DataSet dataSet, string tableName, string commandText, params object[] parameters )
{
return ExecuteData( CreateDataAdapter( CreateCommand( commandText, parameters ) ), dataSet, tableName );
}
/// <summary>
/// 执行无结果的查询
/// </summary>
/// <param name="commandText">查询字符串模板</param>
/// <param name="parameters">查询字符串参数</param>
/// <returns></returns>
public virtual int ExecuteNonQuery( string commandText, params object[] parameters )
{
return ExecuteNonQuery( CreateCommand( commandText, parameters ) );
}
/// <summary>
/// 执行查询,并返回首行首列
/// </summary>
/// <param name="commandText">查询字符串模板</param>
/// <param name="parameters">查询字符串参数</param>
/// <returns></returns>
public virtual object ExecuteScalar( string commandText, params object[] parameters )
{
return ExecuteScalar( CreateCommand( commandText, parameters ) );
}
/// <summary>
/// 执行查询,并返回首行
/// </summary>
/// <param name="commandText">查询字符串模板</param>
/// <param name="parameters">查询字符串参数</param>
/// <returns></returns>
public virtual DataRow ExecuteSingleRow( string commandText, params object[] parameters )
{
return ExecuteSingleRow( CreateCommand( commandText, parameters ) );
}
#endregion