怎么做一个封装类?
就是要把一些基本用到的东西封装起来,包括连接数据库,返回int   dataset   DataReader   dataAdapter   datacommand的类型,谁详细说说,谢谢大家了! 
 做主要的就是连接数据库了   c#.net的,不是web程序,应该叫winform吧?
------解决方案--------------------应该是使用工厂模式 将不同的数据库访问请求 都由该类转换成相应的数据库访问所需的对象
------解决方案--------------------不一定非得是工厂模式 策略模式不行吗? 一样可以.   
 自己一个人做的话封装这么一个类意义不是很大, 
 因为微软的工程师对于数据库操作封装的已经够好了, 
 除非你自信比微软的工程师封装的还要好. 
 不过如果是一个开发团队共同开发的话,这么做可以减少数据库操作所出现的问题,还是值得的.   
 再有就是返回类型最好不要使用DataReader,DataTable,DataSet类型返回 
 这样的返回类型也就是在.net里才认.可以返回xml格式字符串(不是xmlDocument对象) 
 譬如在WebService里调用返回xml字符串的方法 
 用java写的代码接收都没问题
------解决方案--------------------那就是数据库层了,简单的,把你要的方法组合在一个类中就可算封装了
------解决方案--------------------1 做个DATABASE类,最好做成个抽象类,里面封装对数据库的公共基本操作,比如 
 public virtual DataSet ExecuteDataSet(string commandText), 
 public virtual int ExecuteNonQuery(string commandText) 等等   
 2 建几个特定数据库类,比如public class SqlDatabase:Database,这个类从DATABASE类继承,实现SQLSERVER特定的一些操作,类似的可以再做几个,比如OracleDatabase等。   
 3 然后做个DatabaseFactory类 ,这个类根据配制文件来生成特定类型的DATABASE类, 
 类似 
 public static Database CreateDatabase(DatabaseConnectInformation info) 
 		{ 
 			ArgumentValidation.CheckForNullReference(info, "DatabaseConnectInformation ");   
 			Database db = null; 
 			switch(info.DataProvider) 
 			{ 
 				case DataProviderType.SqlClient: 
 				{ 
 					db = new SqlDatabase(); 
 					break; 
 				} 
 				case DataProviderType.OracleClient: 
 				{ 
 					db = new OracleDatabase(); 
 					break; 
 				} 
 				case DataProviderType.OleDb: 
 				{ 
 					db = new MsAccessDatabase(); 
 					break; 
 				} 
 			}   
 			if (db != null) 
 				db.DatabaseConnection = info; 
 			return db; 
 		} 
 	} 
------解决方案--------------------using System; 
 using System.Data; 
 using System.Data.SqlClient; 
 namespace DBAccess 
 { 
 	///  <summary>  
 	/// Class1 的摘要说明。 
 	///  </summary>  
 	public class DB 
 	{ 
 		SqlConnection conn = new SqlConnection ( "server=(local);database=pubs;uid=sa;pwd=sa "); 
 		SqlCommand cmd = new SqlCommand (); 
 		public DB() 
 		{ 
 			// 
 			// TODO: 在此处添加构造函数逻辑 
 			// 
 		}  		 
 		///  <summary>  
 		/// 执行存储过程,返回DataSet 
 		///  </summary>  
 		///  <param name= "cmd "> 存储过程参数数组 </param>  
 		///  <param name= "proc "> 存储过程名 </param>  
 		///  <returns> DataSet </returns>  
 		public DataSet returnDataSet(string proc,SqlParameter[] paras) 
 		{ 
 			this.cmd.Connection = conn; 
 			this.cmd.CommandType = CommandType.StoredProcedure; 
 			this.cmd.CommandText = proc; 
 			if(paras!=null && paras.Length >  0) 
 			{ 
 				foreach(SqlParameter p in paras) 
 				{ 
 					cmd.Parameters.Add(p); 
 				} 
 			} 
 			SqlDataAdapter da = new SqlDataAdapter (); 
 			DataSet ds = new DataSet (); 
 			da.Fill(ds);   
 			return ds; 
 		}   
 		///  <summary>  
 		/// 执行sql语句 
 		///  </summary>  
 		///  <param name= "sql "> sql查询语句 </param>  
 		///  <returns>  </returns>  
 		public DataSet returnDataSet(string sql) 
 		{ 
 			SqlDataAdapter da = new SqlDataAdapter(sql,conn); 
 			DataSet ds = new DataSet (); 
 			da.Fill(ds);   
 			return ds;