一个简单的数据库访问类

 

一个简单的数据库访问类,仿造企业库构建。

代码
using System;
using System.Data;
using System.Data.Common;
using System.Configuration;



    
public class DbHelper
    {
        
private static string dbProviderName = ConfigurationManager.ConnectionStrings["SiteOracle"].ProviderName;
        
private static string dbConnectionString = ConfigurationManager.ConnectionStrings["SiteOracle"].ConnectionString;

        
private DbConnection connection;
        
public DbHelper()
        {
            
this.connection = CreateConnection(DbHelper.dbConnectionString);
        }
        
public DbHelper(string connectionString)
        {
            
this.connection = CreateConnection(connectionString);
        }
        
public static DbConnection CreateConnection()
        {
            DbProviderFactory dbfactory 
= DbProviderFactories.GetFactory(DbHelper.dbProviderName);
            DbConnection dbconn 
= dbfactory.CreateConnection();
            dbconn.ConnectionString 
= DbHelper.dbConnectionString;
            
return dbconn;
        }
        
public static DbConnection CreateConnection(string connectionString)
        {
            DbProviderFactory dbfactory 
= DbProviderFactories.GetFactory(DbHelper.dbProviderName);
            DbConnection dbconn 
= dbfactory.CreateConnection();
            dbconn.ConnectionString 
= connectionString;
            
return dbconn;
        }

        
public DbCommand GetStoredProcCommond(string storedProcedure)
        {
            DbCommand dbCommand 
= connection.CreateCommand();
            dbCommand.CommandText 
= storedProcedure;
            dbCommand.CommandType 
= CommandType.StoredProcedure;
            
return dbCommand;
        }
        
public DbCommand GetSqlStringCommond(string sqlQuery)
        {
            DbCommand dbCommand 
= connection.CreateCommand();
            dbCommand.CommandText 
= sqlQuery;
            dbCommand.CommandType 
= CommandType.Text;
            
return dbCommand;
        }

        
#region 增加参数
        
public void AddParameterCollection(DbCommand cmd, DbParameterCollection dbParameterCollection)
        {
            
foreach (DbParameter dbParameter in dbParameterCollection)
            {
                cmd.Parameters.Add(dbParameter);
            }
        }
        
public void AddOutParameter(DbCommand cmd, string parameterName, DbType dbType, int size)
        {
            DbParameter dbParameter 
= cmd.CreateParameter();
            dbParameter.DbType 
= dbType;
            dbParameter.ParameterName 
= parameterName;
            dbParameter.Size 
= size;
            dbParameter.Direction 
= ParameterDirection.Output;
            cmd.Parameters.Add(dbParameter);
        }
        
public void AddInParameter(DbCommand cmd, string parameterName, DbType dbType, object value)
        {
            DbParameter dbParameter 
= cmd.CreateParameter();
            dbParameter.DbType 
= dbType;
            dbParameter.ParameterName 
= parameterName;
            dbParameter.Value 
= value;
            dbParameter.Direction 
= ParameterDirection.Input;
            cmd.Parameters.Add(dbParameter);
        }
        
public void AddReturnParameter(DbCommand cmd, string parameterName, DbType dbType)
        {
            DbParameter dbParameter 
= cmd.CreateParameter();
            dbParameter.DbType 
= dbType;
            dbParameter.ParameterName 
= parameterName;
            dbParameter.Direction 
= ParameterDirection.ReturnValue;
            cmd.Parameters.Add(dbParameter);
        }
        
public DbParameter GetParameter(DbCommand cmd, string parameterName)
        {
            
return cmd.Parameters[parameterName];
        }

        
#endregion

        
#region 执行
        
public DataSet ExecuteDataSet(DbCommand cmd)
        {
            DbProviderFactory dbfactory 
= DbProviderFactories.GetFactory(DbHelper.dbProviderName);
            DbDataAdapter dbDataAdapter 
= dbfactory.CreateDataAdapter();
            dbDataAdapter.SelectCommand 
= cmd;
            DataSet ds 
= new DataSet();
            dbDataAdapter.Fill(ds);
            
return ds;
        }

        
public DataTable ExecuteDataTable(DbCommand cmd)
        {
            DbProviderFactory dbfactory 
= DbProviderFactories.GetFactory(DbHelper.dbProviderName);
            DbDataAdapter dbDataAdapter 
= dbfactory.CreateDataAdapter();
            dbDataAdapter.SelectCommand 
= cmd;
            DataTable dataTable 
= new DataTable();
            dbDataAdapter.Fill(dataTable);
            
return dataTable;
        }

        
public DbDataReader ExecuteReader(DbCommand cmd)
        {
            cmd.Connection.Open();
            DbDataReader reader 
= cmd.ExecuteReader(CommandBehavior.CloseConnection);            
            
return reader;
        }
        
public int ExecuteNonQuery(DbCommand cmd)
        {
            
using(cmd.Connection)
            {
                cmd.Connection.Open();
                
int ret = cmd.ExecuteNonQuery();               
                
return ret;
            }
           
        }

        
public object ExecuteScalar(DbCommand cmd)
        {
            
using (cmd.Connection)
            {
                cmd.Connection.Open();
                
object ret = cmd.ExecuteScalar();                
                
return ret;
            }
        }
        
#endregion        

        
#region 执行事务
        
public DataSet ExecuteDataSet(DbCommand cmd,Trans t)
        {
            cmd.Connection 
= t.DbConnection;
            cmd.Transaction 
= t.DbTrans;
            DbProviderFactory dbfactory 
= DbProviderFactories.GetFactory(DbHelper.dbProviderName);
            DbDataAdapter dbDataAdapter 
= dbfactory.CreateDataAdapter();
            dbDataAdapter.SelectCommand 
= cmd;
            DataSet ds 
= new DataSet();
            dbDataAdapter.Fill(ds);
            
return ds;
        }

        
public DataTable ExecuteDataTable(DbCommand cmd, Trans t)
        {
            cmd.Connection 
= t.DbConnection;
            cmd.Transaction 
= t.DbTrans;
            DbProviderFactory dbfactory 
= DbProviderFactories.GetFactory(DbHelper.dbProviderName);
            DbDataAdapter dbDataAdapter 
= dbfactory.CreateDataAdapter();
            dbDataAdapter.SelectCommand 
= cmd;
            DataTable dataTable 
= new DataTable();
            dbDataAdapter.Fill(dataTable);
            
return dataTable;
        }

        
public DbDataReader ExecuteReader(DbCommand cmd, Trans t)
        {
            cmd.Connection.Close();
            cmd.Connection 
= t.DbConnection;
            cmd.Transaction 
= t.DbTrans;            
            DbDataReader reader 
= cmd.ExecuteReader();
            DataTable dt 
= new DataTable();            
            
return reader;
        }
        
public int ExecuteNonQuery(DbCommand cmd, Trans t)
        {
            cmd.Connection.Close();
            cmd.Connection 
= t.DbConnection;
            cmd.Transaction 
= t.DbTrans;  
            
int ret = cmd.ExecuteNonQuery();            
            
return ret;
        }

        
public object ExecuteScalar(DbCommand cmd, Trans t)
        {
            cmd.Connection.Close();
            cmd.Connection 
= t.DbConnection;
            cmd.Transaction 
= t.DbTrans;  
            
object ret = cmd.ExecuteScalar();            
            
return ret;
        }
        
#endregion
    }

    
public class Trans : IDisposable
    {
        
private DbConnection conn;
        
private DbTransaction dbTrans;
        
public DbConnection DbConnection
        {
            
get { return this.conn; }
        }
        
public DbTransaction DbTrans
        {
            
get { return this.dbTrans; }
        }

        
public Trans()
        {
            conn 
= DbHelper.CreateConnection();
            conn.Open();
            dbTrans 
= conn.BeginTransaction();
        }
        
public Trans(string connectionString)
        {
            conn 
= DbHelper.CreateConnection(connectionString);
            conn.Open();
            dbTrans 
= conn.BeginTransaction();
        }
        
public void Commit()
        {
            dbTrans.Commit();
            
this.Colse();
        }

        
public void RollBack()
        {
            dbTrans.Rollback();
            
this.Colse();
        }

        
public void Dispose()
        {
            
this.Colse();
        }

        
public void Colse()
        {
            
if (conn.State == System.Data.ConnectionState.Open)
            {
                conn.Close();
            }
        }
    }

 

posted @ 2011-01-05 23:27  catch22  阅读(362)  评论(0编辑  收藏  举报