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


using System;  
using System.Data;  
using System.Data.OracleClient;  
using System.Xml;  
using System.IO;  
  
namespace Websharp.Data  
{  
	///   
	/// OracleDataAccess   
	///   
	public class OracleDataAccess : AbstractDataAccess  
	{  
		#region Constructor  
		public OracleDataAccess(OracleConnection conn)  
		{  
			this.m_DbConnection=conn;  
		}  
  
		public OracleDataAccess(string connectionString)  
		{  
			this.m_DbConnection=new OracleConnection(connectionString);  
		}  
		#endregion  
		  
		#region DataAccess   
  
		#region Support Property & method  
		public override DatabaseType DatabaseType  
		{  
			get{return DatabaseType.Oracle;}  
		}	  
		private OracleConnection m_DbConnection;  
		public override IDbConnection DbConnection  
		{  
			get  
			{  
				return m_DbConnection;  
			}  
		}  
  
		private OracleTransaction 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)  
		{  
			OracleCommand cmd=new OracleCommand();  
			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)  
		{  
			OracleCommand cmd=new OracleCommand();  
			PrepareCommand(cmd,commandType, commandText,commandParameters);  
  
			OracleDataAdapter da=new OracleDataAdapter(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)  
		{  
			OracleCommand cmd=new OracleCommand();  
			PrepareCommand(cmd,commandType, commandText,commandParameters);  
			OracleDataReader dr=cmd.ExecuteReader();  
			SyncParameter(commandParameters);  
			cmd.Parameters.Clear();  
			return dr;  
		}  
		#endregion ExecuteReader	  
  
		#region ExecuteScalar	  
		public override object ExecuteScalar(CommandType commandType, string commandText, QueryParameterCollection commandParameters)  
		{  
			OracleCommand cmd=new OracleCommand();  
			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(OracleCommand 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