这是我现在用的一个数据操作基类,还有两个派生类,即处理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
/// 数据库操作基类
/// </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