数据库访问组件,仿企业库
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
namespace Blog.Data
{
/// <summary>
/// 配置类
/// </summary>
public class AppConfig
{
/// <summary>
/// 完整连接字符串
/// </summary>
public string ConnectionString
{
get;
set;
}
/// <summary>
/// 完整提供程序
/// </summary>
public string ProviderName
{
get;
set;
}
/// <summary>
/// 构造配置对象
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="providerName">提供程序名称</param>
public AppConfig(string connectionString, string providerName)
{
this.ConnectionString = connectionString;
this.ProviderName = providerName;
}
/// <summary>
/// 构造配置对象
/// </summary>
/// <param name="connectionStringName">连接字符串名称</param>
public AppConfig(string connectionStringName)
{
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
string providerName = System.Configuration.ConfigurationManager.ConnectionStrings[connectionStringName].ProviderName;
this.ConnectionString = connectionString;
this.ProviderName = providerName;
}
}
}
//名称:数据访问组件
//时间:2009年4月9日
//作者:王东升
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Common;
using System.Data;
using System.Data.ProviderBase;
namespace Blog.Data
{
/// <summary>
/// 数据库操作类
/// </summary>
public class Database
{
#region 定义
/// <summary>
/// 数据库连接
/// </summary>
private DbConnection Conn = null;
/// <summary>
/// 配置对象
/// </summary>
private AppConfig config = null;
/// <summary>
/// 数据库提供对象
/// </summary>
private DbProviderFactory provider = null;
#endregion
#region 构造数据库对象
/// <summary>
/// 构造数据库对象
/// </summary>
/// <param name="connectStringName">连接字符串名称(配置文件中connectionStrings配置节中某连接的Name)</param>
public Database(string connectStringName)
{
config = new AppConfig(connectStringName);
provider = DbProviderFactories.GetFactory(config.ProviderName);
Conn = provider.CreateConnection();
Conn.ConnectionString = config.ConnectionString;
}
#endregion
#region 获取数据库连接对象
/// <summary>
/// 获取数据库连接对象
/// </summary>
/// <returns>数据库连接对象</returns>
public DbConnection GetConnection()
{
return Conn;
}
#endregion
#region 创建事务
/// <summary>
/// 创建事务
/// </summary>
/// <returns>事务对象</returns>
public DbTransaction CreateDbTransaction()
{
return this.Conn.BeginTransaction();
}
#endregion
#region 创建数据库命令
/// <summary>
/// 创建数据库命令
/// </summary>
/// <param name="commandText">命令文本</param>
/// <returns>命令对象</returns>
public DbCommand CreateDbCommand(string commandText)
{
if (Conn.State != ConnectionState.Open)
{
Conn.Open();
}
DbCommand command = Conn.CreateCommand();
command.CommandText = commandText;
command.CommandType = CommandType.Text;
command.Connection = Conn;
return command;
}
/// <summary>
/// 创建数据库命令
/// </summary>
/// <param name="commandText">命令文本</param>
/// <param name="type">命令类型</param>
/// <returns>命令对象</returns>
public DbCommand CreateDbCommand(string commandText, CommandType type)
{
if (Conn.State != ConnectionState.Open)
{
Conn.Open();
}
DbCommand command = Conn.CreateCommand();
command.CommandText = commandText;
command.CommandType = type;
command.Connection = Conn;
return command;
}
#endregion
/// <summary>
/// 执行命令
/// </summary>
/// <param name="command">命令</param>
/// <returns>值</returns>
public IDataReader ExecuteReader(DbCommand command)
{
try
{
return command.ExecuteReader();
}
catch (Exception ex)
{
command.Connection.Close();
throw ex;
}
}
#region ExecuteScalar
/// <summary>
/// 执行命令
/// </summary>
/// <param name="command">命令</param>
/// <returns>值</returns>
public object ExecuteScalar(DbCommand command)
{
try
{
return command.ExecuteScalar();
}
catch (Exception ex)
{
command.Connection.Close();
throw ex;
}
}
/// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令文本</param>
/// <returns>受影响行数</returns>
public object ExecuteScalar(string commandText)
{
try
{
DbCommand command = Conn.CreateCommand();
command.CommandText = commandText;
command.CommandType = CommandType.Text;
command.Connection.Close();
return command.ExecuteScalar();
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region ExecuteNonQuery
/// <summary>
/// 执行命令
/// </summary>
/// <param name="command">命令</param>
/// <returns>受影响行数</returns>
public int ExecuteNonQuery(DbCommand command)
{
try
{
return command.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 执行命令
/// </summary>
/// <param name="command">命令</param>
/// <param name="Transaction">事务</param>
/// <returns>受影响行数</returns>
public int ExecuteNonQuery(DbCommand command, DbTransaction Transaction)
{
try
{
command.Transaction = Transaction;
int row = command.ExecuteNonQuery();
Transaction.Commit();
return row;
}
catch (Exception ex)
{
Transaction.Rollback();
throw ex;
}
}
/// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令文本</param>
/// <returns>受影响行数</returns>
public int ExecuteNonQuery(string commandText, DbTransaction Transaction)
{
try
{
DbCommand command = CreateDbCommand(commandText);
int row = command.ExecuteNonQuery();
Transaction.Commit();
return row;
}
catch (Exception ex)
{
Transaction.Rollback();
throw ex;
}
}
/// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令文本</param>
/// <returns>受影响行数</returns>
public int ExecuteNonQuery(string commandText)
{
try
{
DbCommand command = Conn.CreateCommand();
command.CommandText = commandText;
command.CommandType = CommandType.Text;
return command.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region ExecuteDataSet
/// <summary>
/// 执行命令
/// </summary>
/// <param name="command">命令</param>
/// <returns>值</returns>
public DataSet ExecuteDataSet(DbCommand command)
{
try
{
DataSet ds = new DataSet();
DbDataAdapter adp = provider.CreateDataAdapter();
adp.SelectCommand = command;
adp.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 执行命令
/// </summary>
/// <param name="commandText">命令</param>
/// <returns>值</returns>
public DataSet ExecuteDataSet(string commandText)
{
try
{
DbCommand command = CreateDbCommand(commandText);
DataSet ds = new DataSet();
DbDataAdapter adp = provider.CreateDataAdapter();
adp.SelectCommand = command;
adp.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 获取数据集(分页)
/// </summary>
/// <param name="command">命令</param>
/// <param name="tableName">表名</param>
/// <param name="strwhere">条件</param>
/// <param name="orderby">排序</param>
/// <param name="page">数据页</param>
/// <param name="pagesize">页大小</param>
/// <returns>数据集</returns>
public DataSet ExecuteDataSet(DbCommand command, string tableName, string strwhere, string orderby, int page, int pagesize)
{
try
{
DataSet ds = new DataSet();
DbDataAdapter adp = provider.CreateDataAdapter();
adp.SelectCommand = command;
adp.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 参数
/// <summary>
/// 新增参数
/// </summary>
/// <param name="command">命令</param>
/// <param name="paramName">参数名</param>
/// <param name="type">参数类型</param>
/// <param name="value">参数值</param>
public void AddParameter(DbCommand command, string parameterName, DbType type, object value)
{
DbParameter param = command.CreateParameter();
param.DbType = type;
param.Direction = ParameterDirection.Input;
param.ParameterName = parameterName;
param.Value = value;
command.Parameters.Add(param);
}
/// <summary>
/// 新增参数
/// </summary>
/// <param name="command">命令</param>
/// <param name="paramName">参数名</param>
/// <param name="type">参数类型</param>
/// <param name="value">参数值</param>
public void AddParameter(DbCommand command, string parameterName, DbType type, object value, ParameterDirection direction)
{
DbParameter param = command.CreateParameter();
param.DbType = type;
param.Direction = direction;
param.ParameterName = parameterName;
param.Value = value;
command.Parameters.Add(param);
}
#endregion
}
}
浙公网安备 33010602011771号