最后一个类DbHelper 继承DbHelperAbstract
using System; using System.Data.Common; using System.Data; using System.Collections.Generic; using FYJ.Data.Util; namespace FYJ.Data { public class DbHelper : DbHelperAbstract { private DbTransaction tran; #region 构造函数 public DbHelper() { } public DbHelper(string connectionName) : base(connectionName) { } public DbHelper(DbProviderFactory factory, string connectionString) : base(factory, connectionString) { } public DbHelper(string providerName, string connectionString) : base(providerName, connectionString) { } #endregion public override DbTransaction Tran { get { return tran; } } public override void BeginTran() { DbConnection conn = this.DbProviderFactoryInstance.CreateConnection(); conn.ConnectionString = this.ConnectionString; conn.Open(); this.tran = conn.BeginTransaction(); } public override void Commit() { if (tran != null) { if (this.tran.Connection != null) { this.tran.Commit(); } if (tran.Connection != null) { tran.Connection.Close(); } tran = null; } } public override void Rollback() { if (tran != null) { if (this.tran.Connection != null) { this.tran.Rollback(); } if (tran.Connection != null) { tran.Connection.Close(); } tran = null; } } public override DataSet RunProcedure(string storedProcName, Dictionary<string, object> dic) { throw new NotImplementedException(); } public override DataSet RunProcedure(IEnumerable<IDataParameter> parameters, string storedProcName) { DbConnection conn = null; if (tran != null) { conn = tran.Connection; } else { conn = this.DbProviderFactoryInstance.CreateConnection(); conn.ConnectionString = this.ConnectionString; conn.Open(); } conn.ConnectionString = this.ConnectionString; conn.Open(); DbCommand cmd = conn.CreateCommand(); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = storedProcName; DataSet ds = new DataSet(); DbDataAdapter adapter = this.DbProviderFactoryInstance.CreateDataAdapter(); if (parameters != null) { foreach (DbParameter parameter in Helper.FixParametersPre(parameters, this.DbHelperTypeEnum)) { cmd.Parameters.Add(parameter); } } adapter.SelectCommand = cmd; adapter.Fill(ds); if (tran == null) { conn.Close(); } return ds; } public override int ExecuteProcedure(string storedProcName, Dictionary<string, object> dic) { if (this.DbHelperTypeEnum == DbHelperType.SqlServer) { RunProcedure(storedProcName, dic); return Convert.ToInt32(dic["@RETURN_VALUE"]); } throw new NotImplementedException(); } public override int ExecuteProcedure(IEnumerable<IDataParameter> parameters, string storedProcName) { throw new NotImplementedException(); } public override DataSet GetDataSet(IEnumerable<IDataParameter> parms, string sql) { DbConnection conn = this.DbProviderFactoryInstance.CreateConnection(); conn.ConnectionString = this.ConnectionString; conn.Open(); DbCommand cmd = conn.CreateCommand(); cmd.CommandText = sql; DbDataAdapter adapter = this.DbProviderFactoryInstance.CreateDataAdapter(); if (parms != null) { foreach (IDataParameter parm in Helper.FixParametersPre(parms, this.DbHelperTypeEnum)) { cmd.Parameters.Add(parm); } } adapter.SelectCommand = cmd; DataSet ds = new DataSet(); adapter.Fill(ds); cmd.Parameters.Clear(); conn.Close(); return ds; } public override int ExecuteSql(IEnumerable<System.Data.IDataParameter> parms, string sql) { DbConnection conn = null; if (tran != null) { conn = tran.Connection; } else { conn = this.DbProviderFactoryInstance.CreateConnection(); conn.ConnectionString = this.ConnectionString; conn.Open(); } DbCommand cmd = conn.CreateCommand(); cmd.Transaction = tran; if (parms != null) { foreach (DbParameter parameter in parms) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } cmd.Parameters.Add(parameter); } } cmd.CommandText = sql; int rows = cmd.ExecuteNonQuery(); if (tran == null) { conn.Close(); } return rows; } } }