www.pudn.com > Websharp2005.rar > OleDbDataAccess.cs


using System; 
 
using System.Data; 
 
using System.Data.OleDb; 
 
using System.Xml; 
 
using System.IO; 
 
 
 
namespace Websharp.Data 
 
{ 
 
	///  
 
	/// 用于支持OleDb的数据库的数据库访问实现类 
 
	///  
 
	public class OleDbDataAccess : AbstractDataAccess 
 
	{ 
 
		#region Constructor 
 
		public OleDbDataAccess(OleDbConnection conn) 
 
		{ 
 
			this.m_DbConnection=conn; 
 
		} 
 
 
 
		public OleDbDataAccess(string connectionString) 
 
		{ 
 
			this.m_DbConnection=new OleDbConnection(connectionString); 
 
		} 
 
		#endregion 
 
		 
 
		#region DataAccess 
 
 
 
		#region Support Property & method 
 
		public override DatabaseType DatabaseType 
 
		{ 
 
			get{return DatabaseType.OleDBSupported;} 
 
		}	 
 
		private OleDbConnection m_DbConnection; 
 
		public override IDbConnection DbConnection 
 
		{ 
 
			get 
 
			{ 
 
				return m_DbConnection; 
 
			} 
 
		} 
 
 
 
		private OleDbTransaction trans=null; 
 
		public override IDbTransaction BeginTransaction() 
 
		{ 
 
			trans=m_DbConnection.BeginTransaction(); 
 
			return trans; 
 
		} 
 
		#endregion Support Property & method 
 
 
 
		#region ExecuteNonQuery 
 
		public override int ExecuteNonQuery(CommandType commandType, string commandText, QueryParameterCollection commandParameters) 
 
		{ 
 
			OleDbCommand cmd=new OleDbCommand(); 
 
			PrepareCommand(cmd,commandType, commandText,commandParameters); 
 
			int tmpValue=cmd.ExecuteNonQuery(); 
 
			SyncParameter(commandParameters); 
 
			cmd.Parameters.Clear(); 
 
			return tmpValue; 
 
		} 
 
		#endregion ExecuteNonQuery 
 
 
 
		#region ExecuteDataSet 
 
		public override DataSet ExecuteDataset(CommandType commandType, string commandText, QueryParameterCollection commandParameters,DataSet ds,string tableName) 
 
		{ 
 
			OleDbCommand cmd=new OleDbCommand(); 
 
			PrepareCommand(cmd,commandType, commandText,commandParameters); 
 
 
 
			OleDbDataAdapter da=new OleDbDataAdapter(cmd); 
 
			if(Object.Equals(tableName,null) || (tableName.Length<1)) 
 
				da.Fill(ds); 
 
			else 
 
				da.Fill(ds,tableName); 
 
 
 
			SyncParameter(commandParameters); 
 
			cmd.Parameters.Clear(); 
 
			return ds; 
 
		} 
 
		#endregion ExecuteDataSet 
 
 
 
		#region ExecuteReader	 
 
		public override IDataReader ExecuteReader(CommandType commandType, string commandText, QueryParameterCollection commandParameters) 
 
		{ 
 
			OleDbCommand cmd=new OleDbCommand(); 
 
			PrepareCommand(cmd,commandType, commandText,commandParameters); 
 
			OleDbDataReader dr=cmd.ExecuteReader(); 
 
			SyncParameter(commandParameters); 
 
			cmd.Parameters.Clear(); 
 
			return dr; 
 
		} 
 
		#endregion ExecuteReader	 
 
 
 
		#region ExecuteScalar	 
 
		public override object ExecuteScalar(CommandType commandType, string commandText, QueryParameterCollection commandParameters) 
 
		{ 
 
			OleDbCommand cmd=new OleDbCommand(); 
 
			PrepareCommand(cmd,commandType, commandText,commandParameters); 
 
			object tmpValue=cmd.ExecuteScalar(); 
 
			SyncParameter(commandParameters); 
 
			cmd.Parameters.Clear(); 
 
			return tmpValue; 
 
		} 
 
		#endregion ExecuteScalar	 
 
 
 
		#region ExecuteXmlReader	 
 
		public override XmlReader ExecuteXmlReader(CommandType commandType, string commandText, QueryParameterCollection commandParameters) 
 
		{ 
 
			DataSet dst=this.ExecuteDataset(commandType,commandText,commandParameters); 
 
			SyncParameter(commandParameters); 
 
			StringReader sreader=new StringReader(dst.GetXml()); 
 
			XmlReader reader; 
 
			try 
 
			{ 
 
				reader=new XmlTextReader(sreader); 
 
			} 
 
			catch(Exception e) 
 
			{ 
 
				sreader.Close(); 
 
				throw e; 
 
			} 
 
			return reader; 
 
		} 
 
		#endregion ExecuteXmlReader 
 
 
 
		#endregion 
 
 
 
		private void PrepareCommand(OleDbCommand cmd,CommandType commandType, string commandText, QueryParameterCollection commandParameters) 
 
		{ 
 
			cmd.CommandType=commandType; 
 
			cmd.CommandText=commandText; 
 
			cmd.Connection=this.m_DbConnection; 
 
			cmd.Transaction=trans; 
 
			if((commandParameters!=null) && (commandParameters.Count>0) ) 
 
			{ 
 
				for(int i=0;i