idbconnection mysql_继承IDbConnection连接不同数据库

本文介绍了一个名为DBManager的密封类,该类实现了IDBManager和IDisposable接口,用于灵活地连接和操作不同的数据库,特别是MySQL。DBManager提供了打开、关闭数据库连接、创建和管理参数、开始和提交事务、执行查询和非查询命令等方法。通过DataProvider属性,可以设置数据库提供者类型,ConnectionString属性则用于设置数据库连接字符串。
摘要由CSDN通过智能技术生成

36453358_1.gifusingSystem;usingSystem.Data;namespaceDbManager

{publicsealedclassDBManager : IDBManager, IDisposable

{#region字段privateDataProvider _providerType;privateIDbConnection _idbConnection;privateIDataReader _iDataReader;privateIDbCommand _idbCommand;privateIDbTransaction _idbTransaction;privateIDbDataParameter[] _idbParameters;privatestring_connectionString;#endregion#region构造方法publicDBManager()

{

}publicDBManager(DataProvider providerType)

{

ProviderType=providerType;

}publicDBManager(DataProvider providerType,stringconnectionString)

{

ProviderType=providerType;

ConnectionString=connectionString;

}#endregion#region属性publicDataProvider ProviderType

{get{return_providerType; }set{ _providerType=value; }

}publicIDbConnection Connection

{get{return_idbConnection; }set{ _idbConnection=value; }

}publicIDataReader DataReader

{get{return_iDataReader; }set{ _iDataReader=value; }

}publicIDbCommand Command

{get{return_idbCommand; }set{ _idbCommand=value; }

}publicIDbTransaction Transaction

{get{return_idbTransaction; }set{ _idbTransaction=value; }

}publicIDbDataParameter[] Parameters

{get{return_idbParameters; }set{ _idbParameters=value; }

}publicstringConnectionString

{get{return_connectionString; }set{ _connectionString=value; }

}#endregion#region公有方法publicvoidOpen()

{

Connection=DBManagerFactory.GetConnection(ProviderType);

Connection.ConnectionString=ConnectionString;if(Connection.State!=ConnectionState.Open)

{

Connection.Open();

}

Command=DBManagerFactory.GetCommand(ProviderType);

}publicvoidClose()

{if(Connection.State!=ConnectionState.Closed)

{

Connection.Close();

}

}publicvoidDispose()

{

GC.SuppressFinalize(this);

Close();

Command=null;

Transaction=null;

Connection=null;

}publicvoidCreateParameters(intparamsCount)

{

Parameters=newIDbDataParameter[paramsCount];

Parameters=DBManagerFactory.GetParameters(ProviderType, paramsCount);

}publicvoidAddParameters(intindex,stringparamName,objectobjValue)

{if(index

{

Parameters[index].ParameterName=paramName;

Parameters[index].Value=objValue;

}

}publicvoidBeginTransaction()

{if(Transaction==null)

{

Transaction=DBManagerFactory.GetTransaction(ProviderType);

}

Command.Transaction=Transaction;

}publicvoidCommitTransaction()

{if(Transaction!=null)

{

Transaction.Commit();

}

Transaction=null;

}publicvoidCloseReader()

{if(DataReader!=null)

{

DataReader.Close();

}

}publicIDataReader ExecuteReader(CommandType commandType,stringcommandText)

{

Command=DBManagerFactory.GetCommand(ProviderType);

Command.Connection=Connection;

PrepareCommand(Command, Connection, Transaction, commandType, commandText, Parameters);

DataReader=Command.ExecuteReader();

Command.Parameters.Clear();returnDataReader;

}publicintExecuteNonQuery(CommandType commandType,stringcommandText)

{

Command=DBManagerFactory.GetCommand(ProviderType);

PrepareCommand(Command, Connection, Transaction, commandType, commandText, Parameters);intreturnValue=Command.ExecuteNonQuery();

Command.Parameters.Clear();returnreturnValue;

}publicobjectExecuteScalar(CommandType commandType,stringcommandText)

{

Command=DBManagerFactory.GetCommand(ProviderType);

PrepareCommand(Command, Connection, Transaction, commandType, commandText, Parameters);objectreturnValue=Command.ExecuteScalar();

Command.Parameters.Clear();returnreturnValue;

}publicDataSet ExecuteDataSet(CommandType commandType,stringcommandText)

{

Command=DBManagerFactory.GetCommand(ProviderType);

PrepareCommand(Command, Connection, Transaction, commandType, commandText, Parameters);

IDbDataAdapter dataAdapter=DBManagerFactory.GetDataAdapter(ProviderType);

dataAdapter.SelectCommand=Command;

DataSet dataSet=newDataSet();

dataAdapter.Fill(dataSet);

Command.Parameters.Clear();returndataSet;

}#endregion#region私有方法privatevoidAttachParameters(IDbCommand command, IDbDataParameter[] commandParameters)

{foreach(IDbDataParameter idbParameterincommandParameters)

{if(idbParameter.Direction==ParameterDirection.InputOutput&&idbParameter.Value==null)

{

idbParameter.Value=DBNull.Value;

}

command.Parameters.Add(idbParameter);

}

}privatevoidPrepareCommand(IDbCommand command, IDbConnection connection, IDbTransaction transaction,

CommandType commandType,stringcommandText, IDbDataParameter[] commandParameters)

{

command.Connection=connection;

command.CommandText=commandText;

command.CommandType=commandType;if(transaction!=null)

{

command.Transaction=transaction;

}if(commandParameters!=null)

{

AttachParameters(command, commandParameters);

}

}#endregion}

}

36453358_1.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值