/**/
/*
* 名称: DataAccessFactory.cs
* 命名空间: Mouse.Tools.Data
* 类: DataAccessFactory
* 版本: 1.0
* 说明:
* 数据访问工厂类,用于产生数据访问类实例
* 作者: 幸福的耗子
* 创建日期: 2007.01.29
* 修改日期: 2007.01.30
* */
using System;
using Mouse.Tools.Data.DataAccessClass;
namespace Mouse.Tools.Data
... {
/**//// <summary>
/// 数据访问工厂类
/// </summary>
public sealed class DataAccessFactory
...{
/**//// <summary>
/// 创建DataAccess对象
/// </summary>
/// <param name="databaseType">要创建DataAccess对象的类型</param>
/// <param name="dataSource">数据源</param>
/// <param name="database">默认数据库</param>
/// <param name="tableName">默认表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
/// <returns>返回创建成功的DataAccess对象</returns>
public static DataAccess CreateDataAccess(DatabaseType databaseType, string dataSource, string database, string tableName, string user, string password)
...{
DataAccess dataAccess = null;
switch(databaseType)
...{
case DatabaseType.Oracle:
...{
dataAccess = new OracleDataAccess(dataSource, database, tableName, user, password);
break;
}
case DatabaseType.SqlServer:
default:
...{
dataAccess = new SqlServerDataAccess(dataSource, database, tableName, user, password);
break;
}
}
return dataAccess;
}
/**//// <summary>
/// 创建DataAccess对象
/// </summary>
/// <param name="databaseType">要创建DataAccess对象的类型</param>
/// <param name="dataSource">数据源</param>
/// <param name="database">默认数据库</param>
/// <param name="tableName">默认表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
/// <param name="selectSql">查询Sql语句</param>
/// <returns>返回创建成功的DataAccess对象</returns>
public static DataAccess CreateDataAccess(DatabaseType databaseType, string dataSource, string database, string tableName, string user, string password, string selectSql)
...{
DataAccess dataAccess = null;
switch(databaseType)
...{
case DatabaseType.Oracle:
...{
dataAccess = new OracleDataAccess(dataSource, database, tableName, user, password, selectSql);
break;
}
case DatabaseType.SqlServer:
default:
...{
dataAccess = new SqlServerDataAccess(dataSource, database, tableName, user, password, selectSql);
break;
}
}
return dataAccess;
}
}
}
* 名称: DataAccessFactory.cs
* 命名空间: Mouse.Tools.Data
* 类: DataAccessFactory
* 版本: 1.0
* 说明:
* 数据访问工厂类,用于产生数据访问类实例
* 作者: 幸福的耗子
* 创建日期: 2007.01.29
* 修改日期: 2007.01.30
* */
using System;
using Mouse.Tools.Data.DataAccessClass;
namespace Mouse.Tools.Data
... {
/**//// <summary>
/// 数据访问工厂类
/// </summary>
public sealed class DataAccessFactory
...{
/**//// <summary>
/// 创建DataAccess对象
/// </summary>
/// <param name="databaseType">要创建DataAccess对象的类型</param>
/// <param name="dataSource">数据源</param>
/// <param name="database">默认数据库</param>
/// <param name="tableName">默认表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
/// <returns>返回创建成功的DataAccess对象</returns>
public static DataAccess CreateDataAccess(DatabaseType databaseType, string dataSource, string database, string tableName, string user, string password)
...{
DataAccess dataAccess = null;
switch(databaseType)
...{
case DatabaseType.Oracle:
...{
dataAccess = new OracleDataAccess(dataSource, database, tableName, user, password);
break;
}
case DatabaseType.SqlServer:
default:
...{
dataAccess = new SqlServerDataAccess(dataSource, database, tableName, user, password);
break;
}
}
return dataAccess;
}
/**//// <summary>
/// 创建DataAccess对象
/// </summary>
/// <param name="databaseType">要创建DataAccess对象的类型</param>
/// <param name="dataSource">数据源</param>
/// <param name="database">默认数据库</param>
/// <param name="tableName">默认表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
/// <param name="selectSql">查询Sql语句</param>
/// <returns>返回创建成功的DataAccess对象</returns>
public static DataAccess CreateDataAccess(DatabaseType databaseType, string dataSource, string database, string tableName, string user, string password, string selectSql)
...{
DataAccess dataAccess = null;
switch(databaseType)
...{
case DatabaseType.Oracle:
...{
dataAccess = new OracleDataAccess(dataSource, database, tableName, user, password, selectSql);
break;
}
case DatabaseType.SqlServer:
default:
...{
dataAccess = new SqlServerDataAccess(dataSource, database, tableName, user, password, selectSql);
break;
}
}
return dataAccess;
}
}
}
/**/
/*
* 名称: DataAccess.cs
* 命名空间: Mouse.Tools.Data
* 类: DataAccess
* 版本: 1.1
* 说明:
* 对数据库的操作都通过这个接口类来进行
* 这个接口类同时也是所有数据操作类的父类
* 作者: 幸福的耗子
* 创建日期: 2007.01.29
* 修改日期: 2007.01.30
* */
using System;
using System.Data;
namespace Mouse.Tools.Data
... {
/**//// <summary>
/// 数据访问接口类
/// </summary>
public abstract class DataAccess : IDisposable
...{
/**//// <summary>
/// 数据源
/// </summary>
protected string dataSource;
/**//// <summary>
/// 获取数据源
/// </summary>
public string DataSource
...{
get
...{
return dataSource;
}
}
/**//// <summary>
/// 数据库名称
/// </summary>
protected string database;
/**//// <summary>
/// 获取数据库名称
/// </summary>
public string Database
...{
get
...{
return database;
}
}
/**//// <summary>
/// 访问表表名
/// </summary>
protected string tableName;
/**//// <summary>
/// 获取访问表表名
/// </summary>
public string TableName
...{
get
...{
return tableName;
}
}
/**//// <summary>
/// 数据库用户
/// </summary>
protected string user;
/**//// <summary>
/// 获取数据库用户
/// </summary>
public string User
...{
get
...{
return user;
}
}
/**//// <summary>
/// 数据库密码
/// </summary>
protected string password;
/**//// <summary>
/// 获取数据库密码
/// </summary>
public string Password
...{
get
...{
return password;
}
}
/**//// <summary>
/// 数据库连接对象
/// </summary>
protected IDbConnection dbConnection;
/**//// <summary>
/// 获取数据库连接对象
/// </summary>
public IDbConnection DBConnection
...{
get
...{
return dbConnection;
}
}
/**//// <summary>
/// 用于操作数据库的对象
/// </summary>
protected IDbDataAdapter dataSetCommand;
/**//// <summary>
/// 获取用于操作数据的对象
/// </summary>
public IDbDataAdapter DataSetCommand
...{
get
...{
return dataSetCommand;
}
}
/**//// <summary>
/// 查询SQL语句
/// </summary>
protected string selectSql;
/**//// <summary>
/// 获取查询SQL语句
/// </summary>
public string SelectSql
...{
get
...{
return selectSql;
}
}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="database">数据库名称</param>
/// <param name="tableName">数据表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
public DataAccess(string dataSource, string database, string tableName, string user, string password)
...{
this.dataSource = dataSource;
this.database = database;
this.tableName = tableName;
this.user = user;
this.password = password;
this.selectSql = null;
}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="database">数据库名称</param>
/// <param name="tableName">数据表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
/// <param name="selectSql">查询SQL语句</param>
public DataAccess(string dataSource, string database, string tableName, string user, string password, string selectSql)
...{
this.dataSource = dataSource;
this.database = database;
this.tableName = tableName;
this.user = user;
this.password = password;
this.selectSql = selectSql;
}
/**//// <summary>
/// 获取表的所有数据
/// </summary>
/// <returns>返回填充了数据的DataSet</returns>
public abstract DataSet SelectData();
/**//// <summary>
/// 更新数据
/// </summary>
/// <param name="dataSet">保存了更新数据的DataSet对象</param>
/// <returns>是否更新成功</returns>
public abstract bool UpdateData(DataSet dataSet);
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <returns>是否填充成功</returns>
public abstract bool FillData(DataSet dataSet, string tablename, string commandText);
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="commandType">查询类型</param>
/// <returns>是否填充成功</returns>
public abstract bool FillData(DataSet dataSet, string tablename, string commandText, CommandType commandType);
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>是否填充成功</returns>
public abstract bool FillData(DataSet dataSet, string tablename, string commandText, string paramName, object paramValue);
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="commandType">查询类型</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>是否填充成功</returns>
public abstract bool FillData(DataSet dataSet, string tablename, string commandText, CommandType commandType, string paramName, object paramValue);
/**//// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">SQL命令</param>
/// <returns>返回影响的行数</returns>
public virtual int Execute(string commandText)
...{
return Execute(commandText, CommandType.Text);
}
/**//// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令</param>
/// <param name="commandType">命令类型</param>
/// <returns>返回影响的行数</returns>
public virtual int Execute(string commandText, CommandType commandType)
...{
IDbCommand dbCommand = DBConnection.CreateCommand();
dbCommand.CommandText = commandText;
dbCommand.CommandType = commandType;
try
...{
return dbCommand.ExecuteNonQuery();
}
catch(Exception e)
...{
throw e;
}
finally
...{
dbCommand.Connection.Close();
dbCommand.Dispose();
}
}
/**//// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>返回影响的行数</returns>
public virtual int Execute(string commandText, string paramName, object paramValue)
...{
return Execute(commandText, CommandType.Text, paramName, paramValue);
}
/**//// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令</param>
/// <param name="commandType">命令类型</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>返回影响的行数</returns>
public abstract int Execute(string commandText, CommandType commandType, string paramName, object paramValue);
/**//// <summary>
/// 实现对象资源的显式释放
/// </summary>
public void Dispose()
...{
Dispose(true);
GC.SuppressFinalize(this);
}
/**//// <summary>
/// 释放本对象的资源
/// </summary>
/// <param name="disposing">是否已经调用GC对象,不要GC对象继续收集此对象的资源</param>
protected virtual void Dispose(bool disposing)
...{
if(!disposing) return;
if(null != dbConnection)
...{
if(dbConnection.State != ConnectionState.Closed)
...{
dbConnection.Close();
}
dbConnection.Dispose();
dbConnection = null;
}
if(null != dataSetCommand)
...{
if(null != dataSetCommand.SelectCommand)
...{
if(null != dataSetCommand.SelectCommand.Connection)
...{
dataSetCommand.SelectCommand.Connection.Dispose();
}
dataSetCommand.SelectCommand.Dispose();
}
if(null != dataSetCommand.InsertCommand)
...{
dataSetCommand.InsertCommand.Dispose();
}
if(null != dataSetCommand.UpdateCommand)
...{
dataSetCommand.UpdateCommand.Dispose();
}
if(null != dataSetCommand.DeleteCommand)
...{
dataSetCommand.DeleteCommand.Dispose();
}
dataSetCommand = null;
}
}
}
}
* 名称: DataAccess.cs
* 命名空间: Mouse.Tools.Data
* 类: DataAccess
* 版本: 1.1
* 说明:
* 对数据库的操作都通过这个接口类来进行
* 这个接口类同时也是所有数据操作类的父类
* 作者: 幸福的耗子
* 创建日期: 2007.01.29
* 修改日期: 2007.01.30
* */
using System;
using System.Data;
namespace Mouse.Tools.Data
... {
/**//// <summary>
/// 数据访问接口类
/// </summary>
public abstract class DataAccess : IDisposable
...{
/**//// <summary>
/// 数据源
/// </summary>
protected string dataSource;
/**//// <summary>
/// 获取数据源
/// </summary>
public string DataSource
...{
get
...{
return dataSource;
}
}
/**//// <summary>
/// 数据库名称
/// </summary>
protected string database;
/**//// <summary>
/// 获取数据库名称
/// </summary>
public string Database
...{
get
...{
return database;
}
}
/**//// <summary>
/// 访问表表名
/// </summary>
protected string tableName;
/**//// <summary>
/// 获取访问表表名
/// </summary>
public string TableName
...{
get
...{
return tableName;
}
}
/**//// <summary>
/// 数据库用户
/// </summary>
protected string user;
/**//// <summary>
/// 获取数据库用户
/// </summary>
public string User
...{
get
...{
return user;
}
}
/**//// <summary>
/// 数据库密码
/// </summary>
protected string password;
/**//// <summary>
/// 获取数据库密码
/// </summary>
public string Password
...{
get
...{
return password;
}
}
/**//// <summary>
/// 数据库连接对象
/// </summary>
protected IDbConnection dbConnection;
/**//// <summary>
/// 获取数据库连接对象
/// </summary>
public IDbConnection DBConnection
...{
get
...{
return dbConnection;
}
}
/**//// <summary>
/// 用于操作数据库的对象
/// </summary>
protected IDbDataAdapter dataSetCommand;
/**//// <summary>
/// 获取用于操作数据的对象
/// </summary>
public IDbDataAdapter DataSetCommand
...{
get
...{
return dataSetCommand;
}
}
/**//// <summary>
/// 查询SQL语句
/// </summary>
protected string selectSql;
/**//// <summary>
/// 获取查询SQL语句
/// </summary>
public string SelectSql
...{
get
...{
return selectSql;
}
}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="database">数据库名称</param>
/// <param name="tableName">数据表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
public DataAccess(string dataSource, string database, string tableName, string user, string password)
...{
this.dataSource = dataSource;
this.database = database;
this.tableName = tableName;
this.user = user;
this.password = password;
this.selectSql = null;
}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="database">数据库名称</param>
/// <param name="tableName">数据表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
/// <param name="selectSql">查询SQL语句</param>
public DataAccess(string dataSource, string database, string tableName, string user, string password, string selectSql)
...{
this.dataSource = dataSource;
this.database = database;
this.tableName = tableName;
this.user = user;
this.password = password;
this.selectSql = selectSql;
}
/**//// <summary>
/// 获取表的所有数据
/// </summary>
/// <returns>返回填充了数据的DataSet</returns>
public abstract DataSet SelectData();
/**//// <summary>
/// 更新数据
/// </summary>
/// <param name="dataSet">保存了更新数据的DataSet对象</param>
/// <returns>是否更新成功</returns>
public abstract bool UpdateData(DataSet dataSet);
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <returns>是否填充成功</returns>
public abstract bool FillData(DataSet dataSet, string tablename, string commandText);
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="commandType">查询类型</param>
/// <returns>是否填充成功</returns>
public abstract bool FillData(DataSet dataSet, string tablename, string commandText, CommandType commandType);
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>是否填充成功</returns>
public abstract bool FillData(DataSet dataSet, string tablename, string commandText, string paramName, object paramValue);
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="commandType">查询类型</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>是否填充成功</returns>
public abstract bool FillData(DataSet dataSet, string tablename, string commandText, CommandType commandType, string paramName, object paramValue);
/**//// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">SQL命令</param>
/// <returns>返回影响的行数</returns>
public virtual int Execute(string commandText)
...{
return Execute(commandText, CommandType.Text);
}
/**//// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令</param>
/// <param name="commandType">命令类型</param>
/// <returns>返回影响的行数</returns>
public virtual int Execute(string commandText, CommandType commandType)
...{
IDbCommand dbCommand = DBConnection.CreateCommand();
dbCommand.CommandText = commandText;
dbCommand.CommandType = commandType;
try
...{
return dbCommand.ExecuteNonQuery();
}
catch(Exception e)
...{
throw e;
}
finally
...{
dbCommand.Connection.Close();
dbCommand.Dispose();
}
}
/**//// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>返回影响的行数</returns>
public virtual int Execute(string commandText, string paramName, object paramValue)
...{
return Execute(commandText, CommandType.Text, paramName, paramValue);
}
/**//// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令</param>
/// <param name="commandType">命令类型</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>返回影响的行数</returns>
public abstract int Execute(string commandText, CommandType commandType, string paramName, object paramValue);
/**//// <summary>
/// 实现对象资源的显式释放
/// </summary>
public void Dispose()
...{
Dispose(true);
GC.SuppressFinalize(this);
}
/**//// <summary>
/// 释放本对象的资源
/// </summary>
/// <param name="disposing">是否已经调用GC对象,不要GC对象继续收集此对象的资源</param>
protected virtual void Dispose(bool disposing)
...{
if(!disposing) return;
if(null != dbConnection)
...{
if(dbConnection.State != ConnectionState.Closed)
...{
dbConnection.Close();
}
dbConnection.Dispose();
dbConnection = null;
}
if(null != dataSetCommand)
...{
if(null != dataSetCommand.SelectCommand)
...{
if(null != dataSetCommand.SelectCommand.Connection)
...{
dataSetCommand.SelectCommand.Connection.Dispose();
}
dataSetCommand.SelectCommand.Dispose();
}
if(null != dataSetCommand.InsertCommand)
...{
dataSetCommand.InsertCommand.Dispose();
}
if(null != dataSetCommand.UpdateCommand)
...{
dataSetCommand.UpdateCommand.Dispose();
}
if(null != dataSetCommand.DeleteCommand)
...{
dataSetCommand.DeleteCommand.Dispose();
}
dataSetCommand = null;
}
}
}
}
/**/
/*
* 名称: OracleDataAccess.cs
* 命名空间: Mouse.Tools.Data.DataAccessClass
* 类: OracleDataAccess
* 版本: 1.1
* 说明:
* 继承自DataAccess,用于操作Oracle数据库
* 作者: 幸福的耗子
* 创建日期: 2007.01.29
* 修改日期: 2007.01.30
* */
using System;
using System.Data;
using System.Data.OracleClient;
namespace Mouse.Tools.Data.DataAccessClass
... {
/**//// <summary>
/// 操作Oracle数据库的数据访问类
/// </summary>
public class OracleDataAccess : DataAccess
...{
/**//// <summary>
/// 使用用户名和密码登陆ORACLE数据库
/// </summary>
private const string CONST_ORACLE_CONNSTR_USERPASS = "Data Source={0};User Id={1};Password={2}";
/**//// <summary>
/// 使用NT验证登陆ORACLE数据库
/// </summary>
private const string CONST_ORACLE_CONNSTR_MECHINE = "Data Source={0};Integrated Security=yes";
/**//// <summary>
/// SelectCommand对象
/// </summary>
private OracleCommand selectCommand;
/**//// <summary>
/// CommandBuilder对象
/// </summary>
private OracleCommandBuilder commandBuilder;
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="database">数据库名称</param>
/// <param name="tableName">数据表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
public OracleDataAccess(string dataSource, string database, string tableName, string user, string password)
:base(dataSource, database, tableName, user, password)
...{
}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="database">数据库名称</param>
/// <param name="tableName">数据表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
/// <param name="selectSql">查询SQL语句</param>
public OracleDataAccess(string dataSource, string database, string tableName, string user, string password, string selectSql)
:base(dataSource, database, tableName, user, password, selectSql)
...{
}
/**//// <summary>
/// 获取表的所有数据
/// </summary>
/// <returns>返回填充了数据的DataSet</returns>
public override DataSet SelectData()
...{
DataSet result = new DataSet();
try
...{
result.EnforceConstraints = false;
(GetConnection() as OracleConnection).Open();
GetDataSetCommand().Fill(result, tableName);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
result.EnforceConstraints = true;
(GetConnection() as OracleConnection).Close();
}
return result;
}
/**//// <summary>
/// 获取SelectCommand对象
/// </summary>
/// <returns>SelectCommand对象</returns>
protected OracleCommand GetSelectCommand()
...{
if(null == selectCommand)
...{
if(null == selectSql)
selectCommand = new OracleCommand("SELECT * FROM " + tableName, GetConnection() as OracleConnection);
else
selectCommand = new OracleCommand(selectSql, GetConnection() as OracleConnection);
}
return selectCommand;
}
/**//// <summary>
/// 获取数据连接对象
/// </summary>
/// <returns>数据连接对象</returns>
private IDbConnection GetConnection()
...{
if(null == dbConnection)
...{
dbConnection = new OracleConnection(GetConnStr());
}
return dbConnection;
}
/**//// <summary>
/// 获取用于操作数据库的对象
/// </summary>
/// <returns>用于操作数据库的对象</returns>
private OracleDataAdapter GetDataSetCommand()
...{
if(null == dataSetCommand)
...{
dataSetCommand = new OracleDataAdapter(GetSelectCommand());
commandBuilder = new OracleCommandBuilder(dataSetCommand as OracleDataAdapter);
}
return dataSetCommand as OracleDataAdapter;
}
/**//// <summary>
/// 获取连接字符串
/// </summary>
/// <returns>连接字符串</returns>
private string GetConnStr()
...{
string connStr = null;
if(user.Trim().Length != 0)
...{
connStr = String.Format(CONST_ORACLE_CONNSTR_USERPASS, dataSource, user, password);
}
else
...{
connStr = String.Format(CONST_ORACLE_CONNSTR_MECHINE, dataSource);
}
return connStr;
}
/**//// <summary>
/// 更新数据
/// </summary>
/// <param name="dataSet">保存了更新数据的DataSet对象</param>
/// <returns>是否更新成功</returns>
public override bool UpdateData(DataSet dataSet)
...{
try
...{
(GetConnection() as OracleConnection).Open();
GetDataSetCommand().Update(dataSet, tableName);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
(GetConnection() as OracleConnection).Close();
}
if(dataSet.HasErrors)
...{
dataSet.Tables[0].GetErrors()[0].ClearErrors();
return false;
}
dataSet.AcceptChanges();
return true;
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText)
...{
return FillData(dataSet, tablename, commandText, CommandType.Text);
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="commandType">查询类型</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText, CommandType commandType)
...{
if(null == dataSet||null == tablename||null == commandText)
return false;
if(tablename.Trim().Length == 0||commandText.Trim().Length == 0)
return false;
OracleDataAdapter da = new OracleDataAdapter();
da.SelectCommand = new OracleCommand(commandText, GetConnection() as OracleConnection);
da.SelectCommand.CommandType = commandType;
try
...{
GetConnection().Open();
da.Fill(dataSet, tablename);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
GetConnection().Close();
}
return true;
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText, string paramName, object paramValue)
...{
return FillData(dataSet, tablename, commandText, CommandType.Text, paramName, paramValue);
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="commandType">查询类型</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText, CommandType commandType, string paramName, object paramValue)
...{
if(null == dataSet||null == tablename||null == commandText)
return false;
if(tablename.Trim().Length == 0||commandText.Trim().Length == 0)
return false;
OracleDataAdapter da = new OracleDataAdapter();
da.SelectCommand = new OracleCommand(commandText, GetConnection() as OracleConnection);
da.SelectCommand.CommandType = commandType;
da.SelectCommand.Parameters.Add(paramName, paramValue);
try
...{
GetConnection().Open();
da.Fill(dataSet, tablename);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
GetConnection().Close();
}
return true;
}
/**//// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令</param>
/// <param name="commandType">命令类型</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>返回影响的行数</returns>
public override int Execute(string commandText, CommandType commandType, string paramName, object paramValue)
...{
IDbCommand dbCommand = DBConnection.CreateCommand();
dbCommand.CommandText = commandText;
dbCommand.CommandType = commandType;
dbCommand.Parameters.Add(new OracleParameter(paramName, paramValue));
try
...{
return dbCommand.ExecuteNonQuery();
}
catch(Exception e)
...{
throw e;
}
finally
...{
dbCommand.Connection.Close();
dbCommand.Dispose();
}
}
/**//// <summary>
/// 释放本对象的资源
/// </summary>
/// <param name="disposing">是否已经调用GC对象,不要GC对象继续收集此对象的资源</param>
protected override void Dispose(bool disposing)
...{
try
...{
if(!disposing) return;
if(null != dbConnection)
...{
dbConnection.Dispose();
}
if(null != dataSetCommand)
...{
(dataSetCommand as OracleDataAdapter).Dispose();
}
}
catch
...{
base.Dispose(disposing);
}
}
}
}
* 名称: OracleDataAccess.cs
* 命名空间: Mouse.Tools.Data.DataAccessClass
* 类: OracleDataAccess
* 版本: 1.1
* 说明:
* 继承自DataAccess,用于操作Oracle数据库
* 作者: 幸福的耗子
* 创建日期: 2007.01.29
* 修改日期: 2007.01.30
* */
using System;
using System.Data;
using System.Data.OracleClient;
namespace Mouse.Tools.Data.DataAccessClass
... {
/**//// <summary>
/// 操作Oracle数据库的数据访问类
/// </summary>
public class OracleDataAccess : DataAccess
...{
/**//// <summary>
/// 使用用户名和密码登陆ORACLE数据库
/// </summary>
private const string CONST_ORACLE_CONNSTR_USERPASS = "Data Source={0};User Id={1};Password={2}";
/**//// <summary>
/// 使用NT验证登陆ORACLE数据库
/// </summary>
private const string CONST_ORACLE_CONNSTR_MECHINE = "Data Source={0};Integrated Security=yes";
/**//// <summary>
/// SelectCommand对象
/// </summary>
private OracleCommand selectCommand;
/**//// <summary>
/// CommandBuilder对象
/// </summary>
private OracleCommandBuilder commandBuilder;
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="database">数据库名称</param>
/// <param name="tableName">数据表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
public OracleDataAccess(string dataSource, string database, string tableName, string user, string password)
:base(dataSource, database, tableName, user, password)
...{
}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="database">数据库名称</param>
/// <param name="tableName">数据表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
/// <param name="selectSql">查询SQL语句</param>
public OracleDataAccess(string dataSource, string database, string tableName, string user, string password, string selectSql)
:base(dataSource, database, tableName, user, password, selectSql)
...{
}
/**//// <summary>
/// 获取表的所有数据
/// </summary>
/// <returns>返回填充了数据的DataSet</returns>
public override DataSet SelectData()
...{
DataSet result = new DataSet();
try
...{
result.EnforceConstraints = false;
(GetConnection() as OracleConnection).Open();
GetDataSetCommand().Fill(result, tableName);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
result.EnforceConstraints = true;
(GetConnection() as OracleConnection).Close();
}
return result;
}
/**//// <summary>
/// 获取SelectCommand对象
/// </summary>
/// <returns>SelectCommand对象</returns>
protected OracleCommand GetSelectCommand()
...{
if(null == selectCommand)
...{
if(null == selectSql)
selectCommand = new OracleCommand("SELECT * FROM " + tableName, GetConnection() as OracleConnection);
else
selectCommand = new OracleCommand(selectSql, GetConnection() as OracleConnection);
}
return selectCommand;
}
/**//// <summary>
/// 获取数据连接对象
/// </summary>
/// <returns>数据连接对象</returns>
private IDbConnection GetConnection()
...{
if(null == dbConnection)
...{
dbConnection = new OracleConnection(GetConnStr());
}
return dbConnection;
}
/**//// <summary>
/// 获取用于操作数据库的对象
/// </summary>
/// <returns>用于操作数据库的对象</returns>
private OracleDataAdapter GetDataSetCommand()
...{
if(null == dataSetCommand)
...{
dataSetCommand = new OracleDataAdapter(GetSelectCommand());
commandBuilder = new OracleCommandBuilder(dataSetCommand as OracleDataAdapter);
}
return dataSetCommand as OracleDataAdapter;
}
/**//// <summary>
/// 获取连接字符串
/// </summary>
/// <returns>连接字符串</returns>
private string GetConnStr()
...{
string connStr = null;
if(user.Trim().Length != 0)
...{
connStr = String.Format(CONST_ORACLE_CONNSTR_USERPASS, dataSource, user, password);
}
else
...{
connStr = String.Format(CONST_ORACLE_CONNSTR_MECHINE, dataSource);
}
return connStr;
}
/**//// <summary>
/// 更新数据
/// </summary>
/// <param name="dataSet">保存了更新数据的DataSet对象</param>
/// <returns>是否更新成功</returns>
public override bool UpdateData(DataSet dataSet)
...{
try
...{
(GetConnection() as OracleConnection).Open();
GetDataSetCommand().Update(dataSet, tableName);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
(GetConnection() as OracleConnection).Close();
}
if(dataSet.HasErrors)
...{
dataSet.Tables[0].GetErrors()[0].ClearErrors();
return false;
}
dataSet.AcceptChanges();
return true;
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText)
...{
return FillData(dataSet, tablename, commandText, CommandType.Text);
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="commandType">查询类型</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText, CommandType commandType)
...{
if(null == dataSet||null == tablename||null == commandText)
return false;
if(tablename.Trim().Length == 0||commandText.Trim().Length == 0)
return false;
OracleDataAdapter da = new OracleDataAdapter();
da.SelectCommand = new OracleCommand(commandText, GetConnection() as OracleConnection);
da.SelectCommand.CommandType = commandType;
try
...{
GetConnection().Open();
da.Fill(dataSet, tablename);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
GetConnection().Close();
}
return true;
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText, string paramName, object paramValue)
...{
return FillData(dataSet, tablename, commandText, CommandType.Text, paramName, paramValue);
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="commandType">查询类型</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText, CommandType commandType, string paramName, object paramValue)
...{
if(null == dataSet||null == tablename||null == commandText)
return false;
if(tablename.Trim().Length == 0||commandText.Trim().Length == 0)
return false;
OracleDataAdapter da = new OracleDataAdapter();
da.SelectCommand = new OracleCommand(commandText, GetConnection() as OracleConnection);
da.SelectCommand.CommandType = commandType;
da.SelectCommand.Parameters.Add(paramName, paramValue);
try
...{
GetConnection().Open();
da.Fill(dataSet, tablename);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
GetConnection().Close();
}
return true;
}
/**//// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令</param>
/// <param name="commandType">命令类型</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>返回影响的行数</returns>
public override int Execute(string commandText, CommandType commandType, string paramName, object paramValue)
...{
IDbCommand dbCommand = DBConnection.CreateCommand();
dbCommand.CommandText = commandText;
dbCommand.CommandType = commandType;
dbCommand.Parameters.Add(new OracleParameter(paramName, paramValue));
try
...{
return dbCommand.ExecuteNonQuery();
}
catch(Exception e)
...{
throw e;
}
finally
...{
dbCommand.Connection.Close();
dbCommand.Dispose();
}
}
/**//// <summary>
/// 释放本对象的资源
/// </summary>
/// <param name="disposing">是否已经调用GC对象,不要GC对象继续收集此对象的资源</param>
protected override void Dispose(bool disposing)
...{
try
...{
if(!disposing) return;
if(null != dbConnection)
...{
dbConnection.Dispose();
}
if(null != dataSetCommand)
...{
(dataSetCommand as OracleDataAdapter).Dispose();
}
}
catch
...{
base.Dispose(disposing);
}
}
}
}
/**/
/*
* 名称: SqlServerDataAccess.cs
* 命名空间: Mouse.Tools.Data.DataAccessClass
* 类: SqlServerDataAccess
* 版本: 1.1
* 说明:
* 继承自DataAccess,用于操作SqlServer数据库
* 作者: 幸福的耗子
* 创建日期: 2007.01.29
* 修改日期: 2007.01.30
* */
using System;
using System.Data;
using System.Data.SqlClient;
namespace Mouse.Tools.Data.DataAccessClass
... {
/**//// <summary>
/// 操作SqlServer数据库的数据访问类
/// </summary>
public class SqlServerDataAccess : DataAccess
...{
/**//// <summary>
/// 使用用户名和密码登陆SQL数据库
/// </summary>
private const string CONST_SQL_CONNSTR_USERPASS = "Data Source={0};Initial Catalog={1};User Id={2};Password={3};";
/**//// <summary>
/// 使用NT验证登陆SQL数据库
/// </summary>
private const string CONST_SQL_CONNSTR_MACHINE = "Integrated Security=SSPI;Persist Security Info=True;Data Source={0};Initial Catalog={1}";
/**//// <summary>
/// SelectCommand对象
/// </summary>
private SqlCommand selectCommand;
/**//// <summary>
/// CommandBuilder对象
/// </summary>
private SqlCommandBuilder commandBuilder;
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="database">数据库名称</param>
/// <param name="tableName">数据表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
public SqlServerDataAccess(string dataSource, string database, string tableName, string user, string password)
:base(dataSource, database, tableName, user, password)
...{
}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="database">数据库名称</param>
/// <param name="tableName">数据表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
/// <param name="selectSql">查询SQL语句</param>
public SqlServerDataAccess(string dataSource, string database, string tableName, string user, string password, string selectSql)
:base(dataSource, database, tableName, user, password, selectSql)
...{
}
/**//// <summary>
/// 获取数据库连接
/// </summary>
/// <returns>数据库连接</returns>
private SqlConnection GetConnection()
...{
if(null == dbConnection)
...{
dbConnection = new SqlConnection(GetConnStr());
}
return dbConnection as SqlConnection;
}
/**//// <summary>
/// 获取SelectCommand对象
/// </summary>
/// <returns>SelectCommand对象</returns>
private SqlCommand GetSelectCommand()
...{
if(null == selectCommand)
...{
if(null == selectSql)
selectCommand = new SqlCommand("SELECT * FROM " + tableName, GetConnection());
else
selectCommand = new SqlCommand(selectSql, GetConnection());
}
return selectCommand;
}
/**//// <summary>
/// 获取用于操作数据库的对象
/// </summary>
/// <returns>用于操作数据库的对象</returns>
private SqlDataAdapter GetDataSetCommand()
...{
if(null == dataSetCommand)
...{
dataSetCommand = new SqlDataAdapter(GetSelectCommand());
commandBuilder = new SqlCommandBuilder(dataSetCommand as SqlDataAdapter);
}
return dataSetCommand as SqlDataAdapter;
}
/**//// <summary>
/// 获取表的所有数据
/// </summary>
/// <returns>返回填充了数据的DataSet</returns>
public override DataSet SelectData()
...{
DataSet result = new DataSet();
try
...{
result.EnforceConstraints = false;
(GetConnection() as SqlConnection).Open();
GetDataSetCommand().Fill(result, tableName);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
result.EnforceConstraints = true;
(GetConnection() as SqlConnection).Close();
}
return result;
}
/**//// <summary>
/// 获取连接字符串
/// </summary>
/// <returns>连接字符串</returns>
private string GetConnStr()
...{
string connStr = null;
if(user.Trim().Length != 0)
...{
connStr = String.Format(CONST_SQL_CONNSTR_USERPASS, dataSource, database, user, password);
}
else
...{
connStr = String.Format(CONST_SQL_CONNSTR_MACHINE, dataSource, database);
}
return connStr;
}
/**//// <summary>
/// 更新数据
/// </summary>
/// <param name="dataSet">保存了更新数据的DataSet对象</param>
/// <returns>是否更新成功</returns>
public override bool UpdateData(DataSet dataSet)
...{
try
...{
(GetConnection() as SqlConnection).Open();
GetDataSetCommand().Update(dataSet, tableName);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
(GetConnection() as SqlConnection).Close();
}
if(dataSet.HasErrors)
...{
dataSet.Tables[0].GetErrors()[0].ClearErrors();
return false;
}
dataSet.AcceptChanges();
return true;
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText)
...{
return FillData(dataSet, tablename, commandText, CommandType.Text);
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="commandType">查询类型</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText, CommandType commandType)
...{
if(null == dataSet||null == tablename||null == commandText)
return false;
if(tablename.Trim().Length == 0||commandText.Trim().Length == 0)
return false;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(commandText, GetConnection());
da.SelectCommand.CommandType = commandType;
try
...{
GetConnection().Open();
da.Fill(dataSet, tablename);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
GetConnection().Close();
}
return true;
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText, string paramName, object paramValue)
...{
return FillData(dataSet, tablename, commandText, CommandType.Text, paramName, paramValue);
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="commandType">查询类型</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText, CommandType commandType, string paramName, object paramValue)
...{
if(null == dataSet||null == tablename||null == commandText)
return false;
if(tablename.Trim().Length == 0||commandText.Trim().Length == 0)
return false;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(commandText, GetConnection());
da.SelectCommand.CommandType = commandType;
da.SelectCommand.Parameters.Add(paramName, paramValue);
try
...{
GetConnection().Open();
da.Fill(dataSet, tablename);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
GetConnection().Close();
}
return true;
}
/**//// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令</param>
/// <param name="commandType">命令类型</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>返回影响的行数</returns>
public override int Execute(string commandText, CommandType commandType, string paramName, object paramValue)
...{
IDbCommand dbCommand = DBConnection.CreateCommand();
dbCommand.CommandText = commandText;
dbCommand.CommandType = commandType;
dbCommand.Parameters.Add(new SqlParameter(paramName, paramValue));
try
...{
return dbCommand.ExecuteNonQuery();
}
catch(Exception e)
...{
throw e;
}
finally
...{
dbCommand.Connection.Close();
dbCommand.Dispose();
}
}
/**//// <summary>
/// 释放本对象的资源
/// </summary>
/// <param name="disposing">是否已经调用GC对象,不要GC对象继续收集此对象的资源</param>
protected override void Dispose(bool disposing)
...{
try
...{
if(!disposing) return;
if(null != dbConnection)
...{
dbConnection.Dispose();
}
if(null != dataSetCommand)
...{
(dataSetCommand as SqlDataAdapter).Dispose();
}
}
catch
...{
base.Dispose(disposing);
}
}
}
}
* 名称: SqlServerDataAccess.cs
* 命名空间: Mouse.Tools.Data.DataAccessClass
* 类: SqlServerDataAccess
* 版本: 1.1
* 说明:
* 继承自DataAccess,用于操作SqlServer数据库
* 作者: 幸福的耗子
* 创建日期: 2007.01.29
* 修改日期: 2007.01.30
* */
using System;
using System.Data;
using System.Data.SqlClient;
namespace Mouse.Tools.Data.DataAccessClass
... {
/**//// <summary>
/// 操作SqlServer数据库的数据访问类
/// </summary>
public class SqlServerDataAccess : DataAccess
...{
/**//// <summary>
/// 使用用户名和密码登陆SQL数据库
/// </summary>
private const string CONST_SQL_CONNSTR_USERPASS = "Data Source={0};Initial Catalog={1};User Id={2};Password={3};";
/**//// <summary>
/// 使用NT验证登陆SQL数据库
/// </summary>
private const string CONST_SQL_CONNSTR_MACHINE = "Integrated Security=SSPI;Persist Security Info=True;Data Source={0};Initial Catalog={1}";
/**//// <summary>
/// SelectCommand对象
/// </summary>
private SqlCommand selectCommand;
/**//// <summary>
/// CommandBuilder对象
/// </summary>
private SqlCommandBuilder commandBuilder;
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="database">数据库名称</param>
/// <param name="tableName">数据表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
public SqlServerDataAccess(string dataSource, string database, string tableName, string user, string password)
:base(dataSource, database, tableName, user, password)
...{
}
/**//// <summary>
/// 构造函数
/// </summary>
/// <param name="dataSource">数据源</param>
/// <param name="database">数据库名称</param>
/// <param name="tableName">数据表名称</param>
/// <param name="user">数据库用户</param>
/// <param name="password">数据库密码</param>
/// <param name="selectSql">查询SQL语句</param>
public SqlServerDataAccess(string dataSource, string database, string tableName, string user, string password, string selectSql)
:base(dataSource, database, tableName, user, password, selectSql)
...{
}
/**//// <summary>
/// 获取数据库连接
/// </summary>
/// <returns>数据库连接</returns>
private SqlConnection GetConnection()
...{
if(null == dbConnection)
...{
dbConnection = new SqlConnection(GetConnStr());
}
return dbConnection as SqlConnection;
}
/**//// <summary>
/// 获取SelectCommand对象
/// </summary>
/// <returns>SelectCommand对象</returns>
private SqlCommand GetSelectCommand()
...{
if(null == selectCommand)
...{
if(null == selectSql)
selectCommand = new SqlCommand("SELECT * FROM " + tableName, GetConnection());
else
selectCommand = new SqlCommand(selectSql, GetConnection());
}
return selectCommand;
}
/**//// <summary>
/// 获取用于操作数据库的对象
/// </summary>
/// <returns>用于操作数据库的对象</returns>
private SqlDataAdapter GetDataSetCommand()
...{
if(null == dataSetCommand)
...{
dataSetCommand = new SqlDataAdapter(GetSelectCommand());
commandBuilder = new SqlCommandBuilder(dataSetCommand as SqlDataAdapter);
}
return dataSetCommand as SqlDataAdapter;
}
/**//// <summary>
/// 获取表的所有数据
/// </summary>
/// <returns>返回填充了数据的DataSet</returns>
public override DataSet SelectData()
...{
DataSet result = new DataSet();
try
...{
result.EnforceConstraints = false;
(GetConnection() as SqlConnection).Open();
GetDataSetCommand().Fill(result, tableName);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
result.EnforceConstraints = true;
(GetConnection() as SqlConnection).Close();
}
return result;
}
/**//// <summary>
/// 获取连接字符串
/// </summary>
/// <returns>连接字符串</returns>
private string GetConnStr()
...{
string connStr = null;
if(user.Trim().Length != 0)
...{
connStr = String.Format(CONST_SQL_CONNSTR_USERPASS, dataSource, database, user, password);
}
else
...{
connStr = String.Format(CONST_SQL_CONNSTR_MACHINE, dataSource, database);
}
return connStr;
}
/**//// <summary>
/// 更新数据
/// </summary>
/// <param name="dataSet">保存了更新数据的DataSet对象</param>
/// <returns>是否更新成功</returns>
public override bool UpdateData(DataSet dataSet)
...{
try
...{
(GetConnection() as SqlConnection).Open();
GetDataSetCommand().Update(dataSet, tableName);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
(GetConnection() as SqlConnection).Close();
}
if(dataSet.HasErrors)
...{
dataSet.Tables[0].GetErrors()[0].ClearErrors();
return false;
}
dataSet.AcceptChanges();
return true;
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText)
...{
return FillData(dataSet, tablename, commandText, CommandType.Text);
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="commandType">查询类型</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText, CommandType commandType)
...{
if(null == dataSet||null == tablename||null == commandText)
return false;
if(tablename.Trim().Length == 0||commandText.Trim().Length == 0)
return false;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(commandText, GetConnection());
da.SelectCommand.CommandType = commandType;
try
...{
GetConnection().Open();
da.Fill(dataSet, tablename);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
GetConnection().Close();
}
return true;
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText, string paramName, object paramValue)
...{
return FillData(dataSet, tablename, commandText, CommandType.Text, paramName, paramValue);
}
/**//// <summary>
/// 填充数据
/// </summary>
/// <param name="dataSet">用于保存数据得DataSet</param>
/// <param name="tablename">要保存得表名称</param>
/// <param name="commandText">查询命令</param>
/// <param name="commandType">查询类型</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>是否填充成功</returns>
public override bool FillData(DataSet dataSet, string tablename, string commandText, CommandType commandType, string paramName, object paramValue)
...{
if(null == dataSet||null == tablename||null == commandText)
return false;
if(tablename.Trim().Length == 0||commandText.Trim().Length == 0)
return false;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(commandText, GetConnection());
da.SelectCommand.CommandType = commandType;
da.SelectCommand.Parameters.Add(paramName, paramValue);
try
...{
GetConnection().Open();
da.Fill(dataSet, tablename);
}
catch(Exception ex)
...{
throw ex;
}
finally
...{
GetConnection().Close();
}
return true;
}
/**//// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令</param>
/// <param name="commandType">命令类型</param>
/// <param name="paramName">参数名称</param>
/// <param name="paramValue">参数值</param>
/// <returns>返回影响的行数</returns>
public override int Execute(string commandText, CommandType commandType, string paramName, object paramValue)
...{
IDbCommand dbCommand = DBConnection.CreateCommand();
dbCommand.CommandText = commandText;
dbCommand.CommandType = commandType;
dbCommand.Parameters.Add(new SqlParameter(paramName, paramValue));
try
...{
return dbCommand.ExecuteNonQuery();
}
catch(Exception e)
...{
throw e;
}
finally
...{
dbCommand.Connection.Close();
dbCommand.Dispose();
}
}
/**//// <summary>
/// 释放本对象的资源
/// </summary>
/// <param name="disposing">是否已经调用GC对象,不要GC对象继续收集此对象的资源</param>
protected override void Dispose(bool disposing)
...{
try
...{
if(!disposing) return;
if(null != dbConnection)
...{
dbConnection.Dispose();
}
if(null != dataSetCommand)
...{
(dataSetCommand as SqlDataAdapter).Dispose();
}
}
catch
...{
base.Dispose(disposing);
}
}
}
}
/**/
/*
* 名称: Defines.cs
* 命名空间: Mouse.Tools.Data
* 类: Defines
* 版本: 1.0
* 说明:
* 包含了所有数据操作相关的类型定义
* 作者: 幸福的耗子
* 创建日期: 2007.01.29
* 修改日期: 2007.01.30
* */
using System;
namespace Mouse.Tools.Data
... {
/**//// <summary>
/// 全局定义信息的集合
/// </summary>
public sealed class Defines
...{
}
/**//// <summary>
/// 数据库类型枚举
/// </summary>
public enum DatabaseType
...{
/**//// <summary>
/// SqlServer数据库
/// </summary>
SqlServer,
/**//// <summary>
/// Oracle数据库
/// </summary>
Oracle
}
}
* 名称: Defines.cs
* 命名空间: Mouse.Tools.Data
* 类: Defines
* 版本: 1.0
* 说明:
* 包含了所有数据操作相关的类型定义
* 作者: 幸福的耗子
* 创建日期: 2007.01.29
* 修改日期: 2007.01.30
* */
using System;
namespace Mouse.Tools.Data
... {
/**//// <summary>
/// 全局定义信息的集合
/// </summary>
public sealed class Defines
...{
}
/**//// <summary>
/// 数据库类型枚举
/// </summary>
public enum DatabaseType
...{
/**//// <summary>
/// SqlServer数据库
/// </summary>
SqlServer,
/**//// <summary>
/// Oracle数据库
/// </summary>
Oracle
}
}