这是我现在用的一个数据操作基类,还有两个派生类,即处理SQL和Ole的,这个就不贴上来了,欢迎大家多提意见.

/**//// <summary>
/// 数据库操作基类
/// </summary>
public abstract class DbOperatorFactory : System.IDisposable

...{

公共常量#region 公共常量


/**//// <summary>
/// 数据库类型
/// </summary>
private const string DATA_BASE_TYPE = "DataBaseType";


/**//// <summary>
/// 数据库连接字符串
/// </summary>
private const string CONNECTION_STRING = "ConnectionString";


/**//// <summary>
/// 数据库配置节名称
/// </summary>
private const string DATA_CONFIG_PATH = "AppConfig/DataConfig";

#endregion


字段#region 字段


/**//// <summary>
/// 数据库连接字符串
/// </summary>
private static string m_ConnectionString = string.Empty;


/**//// <summary>
/// 数据类型
/// </summary>
private static DataBaseType dbType;


/**//// <summary>
/// 命令参数前缀
/// </summary>
protected static string strParameterPrefix = string.Empty;


/**//// <summary>
/// 数据库连接对象
/// </summary>
protected System.Data.IDbConnection dbConn = null;


/**//// <summary>
/// 数据库命令对象
/// </summary>
protected System.Data.IDbCommand dbComm = null;


/**//// <summary>
/// 数据库适配器
/// </summary>
protected System.Data.IDbDataAdapter dbAdapter = null;


/**//// <summary>
/// 数据库事务对象
/// </summary>
protected System.Data.IDbTransaction dbTrans = null;


/**//// <summary>
/// 数据库命令类型
/// </summary>
protected System.Data.CommandType dbCommandType;

#endregion


/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="strConfigFile">配置文件名称</param>
public DbOperatorFactory()

...{
this.dbCommandType = CommandType.Text;
}



属性#region 属性


/**//// <summary>
/// 当前连接对象
/// </summary>
public IDbConnection Connection

...{

get...{ return this.dbConn; }

set...{ this.dbConn = value; }
}


/**//// <summary>
/// 当前事物对象
/// </summary>
public IDbTransaction Transaction

...{

get...{ return this.dbTrans; }

set...{ this.dbTrans = value; }
}


/**//// <summary>
/// 设置数据库命令
/// </summary>
public string CommandText

...{

set...{ this.dbComm.CommandText = value; }
}



/**//// <summary>
/// 设置数据库命令类型
/// </summary>
public System.Data.CommandType SetCommandType

...{

set...{ this.dbComm.CommandType = value; }
}



/**//// <summary>
/// 获取参数集合
/// </summary>
public System.Data.IDataParameterCollection ParameterCollection

...{

get...{ return this.dbComm.Parameters; }
}



/**//// <summary>
/// 数据库连接字符串
/// </summary>
internal string ConnectionString

...{

get...{ return m_ConnectionString; }
}



/**//// <summary>
/// 数据库类型
/// </summary>
internal DataBaseType DataConfigType

...{

get...{ return dbType; }
}


#endregion


方法#region 方法


/**//// <summary>
/// 执行 SQL 语句,并返回受影响的行数
/// </summary>
/// <returns></returns>
public virtual int ExecuteNonQuery()

...{
return this.dbComm.ExecuteNonQuery();
}



/**//// <summary>
/// 执行SQL语句,返回IDataReader接口
/// </summary>
/// <returns></returns>
public virtual System.Data.IDataReader ExecuteReader()

...{
return this.dbComm.ExecuteReader();
}



/**//// <summary>
/// 执行查询,并返回查询所返回的结果集中第一行的第一列
/// </summary>
/// <returns></returns>
public virtual object ExecuteScalar()

...{
return this.dbComm.ExecuteScalar();
}


/**//// <summary>
/// 执行SQL语句,返回DataTable对象
/// </summary>
/// <returns></returns>
public virtual System.Data.DataTable ExecuteDataTable()

...{
return this.ExecuteDataSet().Tables[0];
}



/**//// <summary>
/// 执行SQL语句,返回DataSet对象
/// </summary>
/// <returns></returns>
public virtual System.Data.DataSet ExecuteDataSet()

...{
if( this.dbAdapter == null )

...{
throw new Exception( "数据库操作对象未初始化!" );
}
DataSet ds = new DataSet();
this.dbAdapter.SelectCommand = this.dbComm;
this.dbAdapter.Fill( ds );
return ds;
}



/**//// <summary>
/// 开始执行事务
/// </summary>
public virtual void BeginTransaction()

...{
this.dbTrans = this.dbConn.BeginTransaction();
this.dbComm.Transaction = this.dbTrans;
}



/**//// <summary>
/// 开始执行指定级别的事务
/// </summary>
/// <param name="level"></param>
public virtual void BeginTransaction( System.Data.IsolationLevel level )

...{
this.dbTrans = this.dbConn.BeginTransaction( level );
this.dbComm.Transaction = this.dbTrans;
}



/**//// <summary>
/// 提交事务
/// </summary>
public void Commit()

...{
this.dbTrans.Commit();
}



/**//// <summary>
/// 回滚事务
/// </summary>
public void Rollback()

...{
this.dbTrans.Rollback();
}



/**//// <summary>
/// 打开数据库连接
/// </summary>
public void Open()

...{
if( this.dbConn.State != ConnectionState.Open )
this.dbConn.Open();
}



/**//// <summary>
/// 关闭数据库连接
/// </summary>
public void Close()

...{
this.dbConn.Close();
}



/**//// <summary>
/// 更改变数据库名称
/// </summary>
/// <param name="databaseName"></param>
public void ChangeDataBase( string databaseName )

...{
this.dbConn.ChangeDatabase( databaseName );
}



/**//// <summary>
/// 添加参数
/// </summary>
/// <param name="objValue">参数值</param>
/// <param name="paraName">参数名称</param>
/// <param name="dbType">数据类型</param>
/// <param name="size">长度</param>
/// <param name="sourceColumn">源列</param>

public virtual void AddParam( object objValue,string paraName,SqlDbType dbType,int size,string sourceColumn )...{}


/**//// <summary>
/// 添加参数
/// </summary>
/// <param name="paraName">参数名</param>
/// <param name="objValue">参数值</param>
/// <param name="dbType">参数类型</param>
/// <param name="size">类型大小</param>
/// <param name="sourceColumn">源列名称</param>
public abstract void AddParameter( string paraName,object objValue,SqlDbType dbType,int size,string sourceColumn );


/**//// <summary>
/// 添加参数
/// </summary>
/// <param name="paraName">参数名称</param>
/// <param name="objValue">参数值</param>
/// <param name="dbtype">参数类型</param>
public abstract void AddParameter( string paraName,object objValue,SqlDbType dbType );


/**//// <summary>
/// 添加参数
/// </summary>
/// <param name="paraName">参数名称</param>
/// <param name="objValue">参数值</param>
/// <param name="dbtype">参数类型</param>
/// <param name="sourceColumn">源列名称</param>
public abstract void AddParameter( string paraName, object objValue,SqlDbType dbtype,string sourceColumn );


/**//// <summary>
/// 添加参数
/// </summary>
/// <param name="paraName">参数名称</param>
/// <param name="objValue">参数值</param>
/// <param name="dbtype">参数类型</param>
/// <param name="sourceColumn">源列名称</param>
/// <param name="size">参数大小</param>
public abstract void AddParameter( string paraName, object objValue,SqlDbType dbtype,string sourceColumn,int size );


/**//// <summary>
/// 添加参数
/// </summary>
/// <param name="paraName">参数名称</param>
/// <param name="objValue">参数值</param>
/// <param name="dbtype">参数类型</param>
/// <param name="sourceColumn">源列名称</param>
/// <param name="size">参数大小</param>
/// <param name="paraDirection">参数的方向类型</param>
public abstract void AddParameter( string paraName, object objValue,SqlDbType dbtype,string sourceColumn,int size,System.Data.ParameterDirection paraDirection );


/**//// <summary>
/// 清除参数列表
/// </summary>
public virtual void ClearParameters()

...{
this.dbComm.Parameters.Clear();
}



/**//// <summary>
/// 创建数据库操作对象
/// </summary>
/// <param name="p_dbType">数据对象类型</param>
/// <param name="p_strDataBase">数据库名称</param>
/// <param name="p_strPassword">数据库密码</param>
/// <param name="p_strServer">数据库服务地址</param>
/// <param name="p_strUID">数据库用户</param>
/// <remarks>
/// 如果是Ole则使用strDataBase为连接字符串
/// </remarks>
/// <returns></returns>
public static DbOperatorFactory CreateDbOperatorFactory( string p_strUID, string p_strPassword, string p_strServer, string p_strDataBase, DataBaseType p_dbType )

...{
if( DbOperatorFactory.m_ConnectionString.Length <= 0 )

...{
switch( p_dbType )

...{
case DataBaseType.MSSQL:
m_ConnectionString = string.Format( "Password={0};Persist Security Info=True;User ID={1};Initial Catalog={2};Data Source={3}",p_strPassword,p_strUID,p_strDataBase,p_strServer );
break;
case DataBaseType.ODBC:
break;
case DataBaseType.OLEDB:
m_ConnectionString = p_strDataBase;
break;
}

dbType = p_dbType;
}

DbOperatorFactory dbObject = null;
switch( p_dbType )

...{
case DataBaseType.MSSQL:
dbObject = new DbOperatorSQLFactory();
break;
case DataBaseType.ODBC:
dbObject = new DbOperatorODBCFactory();
break;
case DataBaseType.OLEDB:
dbObject = new DbOperatorOleDbFactory();
break;
}
return dbObject;
}


#endregion


IDisposable 成员#region IDisposable 成员

public void Dispose()

...{
this.Dispose( true );
GC.SuppressFinalize( this );
}
protected virtual void Dispose( bool disposing )

...{
if( disposing )

...{
if( this.dbComm != null )
this.dbComm.Dispose();
if( this.dbTrans != null )
this.dbTrans.Dispose();
if( this.dbConn != null )

...{
if( this.dbConn.State != System.Data.ConnectionState.Closed )
this.dbConn.Close();
this.dbConn.Dispose();
}
}
}

#endregion
} //class DbOperatorFactory






















































































































































































































































































































































































































































































































