using System;
using System.Windows.Forms;
namespace JXC_MIS.DataTier
{
	/// <summary>
	/// ClsDataBase 的摘要说明。
	/// </summary>
	public class ClsDataBase
	{
		ClsAccess AdoAccess=new ClsAccess();
		ClsDataBaseAccess newADO=new ClsDataBaseAccess();
		public ClsDataBase()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//

		}

				public string[,] OpenOrder(string p_sql)
				{
					string[,] p_Arrary=new string [10,10];
					int rs=p_Arrary.GetUpperBound(0)+1;
					int cs=p_Arrary.GetUpperBound(1)+1;
					try
					{
		
						newADO.ExeSql(p_sql);
		
						for (int r=0;r<rs;r++)
						{
		//					if (p_Arrary[r,1]==null && p_Arrary[r,1]==""){} 
		//					else { p_ListBox.Items.Add( p_Arrary[r,1]);}
							return p_Arrary;
		
						}
						return p_Arrary;
					}
					catch
					{
						return null;
					}
					
				}
		public void InitComboBox(System.Windows.Forms.ComboBox p_ComboBox,string p_SQL)
		{
//			JXC_MIS.DataTier.ClsDataBaseAccess newADO=new JXC_MIS.DataTier.ClsDataBaseAccess();
			try
			{
				System.Data.DataSet dst = new System.Data.DataSet();
				dst=newADO.GetDataSet(p_SQL);
				int rs=dst.Tables[0].Rows.Count ;
				if (rs>0)
				{
					System.Data.DataRow dr =null;
					for (int r=0;r<rs;r++)
					{
						dr = dst.Tables[0].Rows[r];
						p_ComboBox.Items.Add(dr[0].ToString());
					}
						
				}
			}
			catch
			{
				return;
			}
		}
		/// <summary>
		/// 得到指定SQL和strSQL1或其存储过程的数据集
		/// </summary>
		/// <param name="strSQL">指定选择查询或存储过程</param>
		/// <returns></returns>
		public System.Data.DataSet GetDataSet(string strSQL,string strSQL1)
		{
			System.Data.DataSet dst = new System.Data.DataSet();
			if (strSQL=="")
			{
				dst =null;
			}
			else
			{
				dst=newADO.GetDataSet(strSQL +"  "+ strSQL1);	
			}

			return dst;	

		}


		/// <summary>
		/// 打开数据记录加入到数组中
		/// </summary>
		public string[,] GetDataArray(System.Data.DataSet dst)
		{
			if (dst==null){return null;}
//			System.Data.DataSet dst = new System.Data.DataSet();
//			dst=AdoAccess.GetDataSet(p_SQL);
			int rs=dst.Tables[0].Rows.Count ;
			int cs=dst.Tables[0].Columns.Count  ;
			if (rs>0)
			{
				string [,] sArray=new string[rs,cs];
				System.Data.DataRow dr =null;
				for (int r=0;r<rs;r++)
				{
					dr = dst.Tables[0].Rows[r];
					for (int c=0;c<cs;c++)
					{
						sArray[r,c]=dr[c].ToString();
					}
				}
				
				return sArray;
			}
			else
			{
				return null;
			}

		}
		/// <summary>
		/// 打开数据记录加入到数组中
		/// </summary>

		public string[,] GetDataArray(string p_SQL)
		{
			System.Data.DataSet dst = new System.Data.DataSet();
			try
			{
				dst=newADO.GetDataSet(p_SQL);
				int rs=dst.Tables[0].Rows.Count ;
				int cs=dst.Tables[0].Columns.Count  ;
				if (rs>0)
				{
					string [,] sArray=new string[rs,cs];
					System.Data.DataRow dr =null;
					for (int r=0;r<rs;r++)
					{
						dr = dst.Tables[0].Rows[r];
						for (int c=0;c<cs;c++)
						{
							sArray[r,c]=dr[c].ToString();
						}
					}
				
					return sArray;
				}
				else
				{
					return null;
				}
			}
			catch
			{
			return null;
			}

		}
//		public string[,] GetDataArray(string p_SQL,bool p_RowNo)
//		{
//			string [,] sArray=GetDataArray(p_SQL);
//
//			int rs=sArray.GetUpperBound(0)+1;
//			int cs=sArray.GetUpperBound(1)+1;
//            int rn=1;
//			string [,] sArray1=new string[rs+1,cs+1];
//			try
//			{
//					for (int r=0;r<rs;r++)
//					{
//						if (p_RowNo==true)
//						{
//                            rn=r+1;
//							sArray1[r,0]=rn.ToString();
//						
//						}
//						for (int c=0;c<cs;c++)
//						{
//							sArray1[r,c+1]=sArray1[r,c];
//						}
//					}
//				
//					return sArray1;
//			}
//			catch
//			{
//				return null;
//			}
//
//		}

				/// <summary>
				/// 打开数据记录加入到数组中(带标题、行号)
				/// </summary>

		public string[,] GetDataArray(string p_SQL,int p_Caption)
		{
			System.Data.DataSet dst = new System.Data.DataSet();
			dst=newADO.GetDataSet(p_SQL);
			int rs=dst.Tables[0].Rows.Count+1 ;
			int cs=dst.Tables[0].Columns.Count+1  ;
			string [,] sArray=new string[rs,cs];
			sArray[0,0]="NO";
			for (int i=1;i<cs;i++)
			{
				sArray[0,i]=dst.Tables[0].Columns[i-1].Caption;
			}
			if (rs>0)
			{
				System.Data.DataRow dr =null;
				for (int r=1;r<rs;r++)
				{
					dr = dst.Tables[0].Rows[r-1];
					sArray[r,0]=r.ToString();
					for (int c=1;c<cs;c++)
					{
						sArray[r,c]=dr[c-1].ToString();
					}
				}
				
				return sArray;
			}
			else
			{
				return null;
			}

		}
		/// <summary>
		/// 打开数据记录加入到数组中(带标题、不带行号)
		/// </summary>

		public string[,] GetDataArray(string p_SQL,string p_NotRowNO)
		{
			try
			{
				System.Data.DataSet dst = new System.Data.DataSet();
				dst=newADO.GetDataSet(p_SQL);
				int rs=dst.Tables[0].Rows.Count+1 ;
				int cs=dst.Tables[0].Columns.Count  ;
				string [,] sArray=new string[rs,cs];
				for (int i=0;i<cs;i++)
				{
					sArray[0,i]=dst.Tables[0].Columns[i].Caption;
				}
				if (rs>0)
				{
					System.Data.DataRow dr =null;
					for (int r=1;r<rs;r++)
					{
						dr = dst.Tables[0].Rows[r-1];
						sArray[r,0]=r.ToString();
						for (int c=0;c<cs;c++)
						{
							sArray[r,c]=dr[c].ToString();
						}
					}
				
					return sArray;
				}
				else
				{
					return null;
				}
			}
			catch
			{
				return null;
			}
		}

		/// <summary>
		/// 打开数据记录加入到数组中,p_ColCaption如果等于真责第0行数组填充标题
		/// </summary>

		public string[,] GetDataArray(string p_SQL,bool p_ColCaption)
		{
			System.Data.DataSet dst = new System.Data.DataSet();
			dst=newADO.GetDataSet(p_SQL);
			int rs=dst.Tables[0].Rows.Count ;
			int cs=dst.Tables[0].Columns.Count  ;
			if (rs>0)
			{
				string [,] sArray=new string[rs,cs];
				System.Data.DataRow dr =null;
				for (int r=0;r<rs;r++)
				{
					dr = dst.Tables[0].Rows[r];
					for (int c=0;c<cs;c++)
					{
						sArray[r,c]=dr[c].ToString();
					}
				}
				
				return sArray;
			}
			else
			{
				return null;
			}

		}
////
////		/// <summary>
////		/// 公有枚举成员-----数据库类型
////		/// </summary>
////		public enum DataBaseType{ACCESS97 = 0,ACCESS2KX = 1,SQLSERVER = 2,ORACLE = 3,ODBC = 4};		
////
////		//***私有成员变量***私有成员变量***私有成员变量***私有成员变量***私有成员变量***私有成员变量***私有成员变量***私有成员变量***私有成员变量***私有成员变量***私有成员变量***私有成员变量***
////		private bool	m_blnDefaultSqlConnection;				//默认连接SQL数据库，在构造函数中指出
////
////		private string	m_strConnectionString;					//数据库连接字符串
////		private bool	m_blnTransSuccess;						//事务处理是否成功
////
////		/*
////		 *******************************************************************************
////		 *定义最常用的对象，以支持跨数据库、独立于 SqlClient、OleDb的类库
////		 *******************************************************************************
////		*/
////
////		//连接
////		private System.Data.SqlClient.SqlConnection		_SqlConn	= new System.Data.SqlClient.SqlConnection();		//Sql数据库连接
////		private System.Data.OleDb.OleDbConnection		_OleDbConn	= new System.Data.OleDb.OleDbConnection();			//Oledb数据库连接
////		//适配器
////		private System.Data.SqlClient.SqlDataAdapter 	_SqlDtAdpt	= new System.Data.SqlClient.SqlDataAdapter();		//Sql数据适配器
////		private System.Data.OleDb.OleDbDataAdapter 		_OleDbAdpt	= new System.Data.OleDb.OleDbDataAdapter();			//Oledb数据库连接
////		//命令
////		private System.Data.SqlClient.SqlCommand		_SqlCmd		= new System.Data.SqlClient.SqlCommand();			//定义Command对象，以支持事务处理(ExeSql)
////		private System.Data.OleDb.OleDbCommand			_OleDbCmd	= new System.Data.OleDb.OleDbCommand();				//定义Command对象，以支持事务处理(ExeSql)
////		//参数
////		private System.Data.SqlClient.SqlParameter		_SqlPar		= new System.Data.SqlClient.SqlParameter();			//定义Parameter对象
////		private System.Data.OleDb.OleDbParameter		_OleDbPar	= new System.Data.OleDb.OleDbParameter();			//定义Parameter对象
////		//事务
////		private System.Data.SqlClient.SqlTransaction	_SqlTran ;														//定义Transaction对象，以支持事务处理
////		private System.Data.OleDb.OleDbTransaction		_OleDbTran;			
		//		public string[,] OpenOrder(string p_TableName,string p_Fields,string p_Where)
		//		{
		//			string[,] p_Arrary=new string [10,10];
		//			int rs=p_Arrary.GetUpperBound(0)+1;
		//			int cs=p_Arrary.GetUpperBound(1)+1;
		//			try
		//			{
		//
		//
		//
		//				for (int r=0;r<rs;r++)
		//				{
		////					if (p_Arrary[r,1]==null && p_Arrary[r,1]==""){} 
		////					else { p_ListBox.Items.Add( p_Arrary[r,1]);}
		//					return p_Arrary;
		//
		//				}
		//				return p_Arrary;
		//			}
		//			catch
		//			{
		//				return null;
		//			}
		//			
		//		}
		//
		//		/// <summary>
		//		/// 打开并返回 OleDbConnection 联接
		//		/// </summary>
		//		/// <Info>
		//		///		<作者>周方勇</作者>
		//		///		<创建日期>2002-10-05</创建日期>
		//		///		<修改日期>2003-04-15</修改日期>
		//		///		<其它说明>无</其它说明>
		//		/// </Info>
		//		/// <Input>
		//		///		<param name="DataBase">数据库类型enum DataBaseType{ACCESS97 = 0,ACCESS2KX = 1,SQLSERVER = 2,ORACLE = 3,ODBC = 4}</param>
		//		///		<param name="StrDataSourceOrAccessPath">数据源。装有SqlServer数据库的计算机名/Oracel的Net8连接串/Access文件路径/ODBC数据源</param>
		//		///		<param name="strDefaultDataBaseOrAccessDatabasePassword">SqlServer默认数据库/Access数据库的密码</param>
		//		///		<param name="strUserID">用户名</param>
		//		///		<param name="strPWD">密码</param>
		//		/// </Input>   
		//		/// <Other>
		//		/// 要独立运行，定义 public enum DataBaseType{ACCESS97 = 0,ACCESS2KX = 1,SQLSERVER = 2,ORACLE = 3,ODBC = 4};
		//		/// </Other>
		//		/// <returns>返回 OleDbConnection 联接</returns>
		//		public System.Data.OleDb.OleDbConnection GetOleDbConnection(string StrDataSourceOrAccessPath,string strDefaultDataBaseOrAccessDatabasePassword,string strUserID,string strPWD)
		//		{
		//			//定义连接字符串
		//			string strConn="";
		//			//定义OleDb数据库连接
		//			System.Data.OleDb.OleDbConnection oleDbConn=new System.Data.OleDb.OleDbConnection();
		//			strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Password=" + strPWD + ";User ID=" + strUserID + ";Data Source=" + StrDataSourceOrAccessPath + ";Jet OLEDB:Database Password=" + strDefaultDataBaseOrAccessDatabasePassword;
		//
		//			//        '清空错误
		//			//        Err.Clear()
		//
		//			//打开数据库
		//			try
		//			{
		//				oleDbConn.ConnectionString=strConn;
		//				oleDbConn.Open();
		//				
		//			}
		//			catch(System.Exception ex)
		//			{
		//				System.Windows.Forms.MessageBox.Show("错误提示：数据库打开失败，请与管理员联系！" + "\n" + "详细信息：" + ex.Message.ToString(), "提示", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
		//				oleDbConn=null;	//对应VB的Nothing，null 关键字是表示不引用任何对象的空引用的文字值。null 是引用类型变量的默认值。
		//			}
		//			
		//			//返回
		//			return oleDbConn;			
		//		}//GetOleDbConn()结束
		//
		//
		//
		//		/// <summary>
		//		/// 根据SELECT语句或查询型存储过程，返回数据集
		//		/// </summary>
		//		/// <param name="strSQL">SELECT语句或存储过程</param>
		//		/// <param name="strDataTable">数据集表名</param>
		//		/// <param name="Connection">数据库连接对象</param>
		//		/// <returns></returns>
		//		public System.Data.DataSet GetDataSet(string strSQL,object Connection)
		//		{
		//			//define string variable for get SQL type...
		//			string strType;
		//			//define Err info...
		//			string strErrInfo="";
		//			//define bool variable for check SQL is or not StoredProcedure
		//			bool blnStoredProcedure;
		//
		//			//定义数据集对象
		//			System.Data.DataSet dst = new System.Data.DataSet();
		//
		//			//define commmad object for Exeute SQL...
		//			System.Data.SqlClient.SqlCommand SqlCmd=new System.Data.SqlClient.SqlCommand();
		//			System.Data.OleDb.OleDbCommand OleDbCmd= new System.Data.OleDb.OleDbCommand();
		//
		//			//define DataAdapter object for fill dataset...
		//			System.Data.SqlClient.SqlDataAdapter SqlDtAdpt = new System.Data.SqlClient.SqlDataAdapter();
		//			System.Data.OleDb.OleDbDataAdapter OleDbDtAdpt = new System.Data.OleDb.OleDbDataAdapter();
		//
		//			strType = strSQL.Substring(0, 6).ToUpper();
		//			
		//			if (strType != "SELECT")
		//			{
		//				//return -1;
		//				blnStoredProcedure = true;
		//			}
		//			else
		//			{
		//				blnStoredProcedure = false;
		//			}
		//
		//			//Err.Clear()
		//
		//			//检查第二参数是否为数据库连接对象
		//			if (Connection.GetType().ToString()!="System.Data.SqlClient.SqlConnection" && Connection.GetType().ToString()!="System.Data.OleDb.OleDbConnection")				 
		//				throw new System.Exception("方法ExecuteSql(string,object)第二参数\n必须是类型为System.Data.SqlClient.SqlConnection或者\nSystem.Data.OleDb.OleDbConnection的数据库连接对象。");
		//
		//			try
		//			{
		//				if (Connection.GetType().ToString()  ==  "System.Data.SqlClient.SqlConnection")
		//				{
		//					SqlDtAdpt.SelectCommand = SqlCmd;
		//					SqlCmd.Connection = (System.Data.SqlClient.SqlConnection)Connection;
		//						
		//					if (SqlCmd.Connection.State!=System.Data.ConnectionState.Open)
		//						return null;
		//
		//					SqlCmd.CommandText = strSQL;
		//					
		//					if (blnStoredProcedure  ==  true)
		//						SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
		//					else
		//						SqlCmd.CommandType = System.Data.CommandType.Text;
		//
		//					//填充数据集
		//					SqlDtAdpt.Fill(dst);
		//				}
		//				else if(Connection.GetType().ToString()  ==  "System.Data.OleDb.OleDbConnection")
		//				{
		//
		//					OleDbDtAdpt.SelectCommand = OleDbCmd;
		//					OleDbCmd.Connection = (System.Data.OleDb.OleDbConnection)Connection;
		//					if (OleDbCmd.Connection.State!=System.Data.ConnectionState.Open)
		//						return null;
		//						
		//					OleDbCmd.CommandText = strSQL;
		//
		//					if (blnStoredProcedure  ==  true)
		//						OleDbCmd.CommandType = System.Data.CommandType.StoredProcedure;
		//					else
		//						OleDbCmd.CommandType = System.Data.CommandType.Text;
		//
		//					//填充数据集
		//					OleDbDtAdpt.Fill(dst);
		//				}
		//			}
		//
		//			catch(System.Exception ex)
		//			{			                
		//				strErrInfo="错误提示：获取数据信息失败！" + "\n" + ex.Message;
		//			}	
		//
		//			finally
		//			{
		//				if (strErrInfo!="")
		//					System.Windows.Forms.MessageBox.Show(strErrInfo,"提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Warning);
		//
		//				//释放资源，返回
		//				SqlCmd = null;
		//				OleDbCmd = null;
		//				SqlDtAdpt = null;
		//				OleDbDtAdpt =null;
		//			}
		//			return dst;
		//
		//		}
		//
		//		/// <summary>
		//		/// 执行SQL,返回值：-1:失败    >=0:成功，并返回执行的行数
		//		/// </summary>
		//		/// <param name="p_CommandText">指定的操作型SQL语句(DELETE/INSERT/UPDATE)或操作型存储过程</param>
		//		/// <param name="p_SqlConnection">SqlConnection连接对象</param>
		//		/// <returns>int 返回值：-1:失败    >=0:成功</returns>
		//		public bool ExeSql(string p_CommandText, System.Data.OleDb.OleDbConnection p_SqlConnection)
		//		{
		//			int intEffect=0;
		//			intEffect=ExecuteSql(p_CommandText,p_SqlConnection);
		//			//设置事务成功执行状态
		//			if (intEffect == -1)
		//			{
		//				return false;
		//			}
		//			else
		//			{
		//			return true;
		//			}
		//			
		//		}
		//
		////		/// <param name="p_CommandText">指定的操作型SQL语句(DELETE/INSERT/UPDATE)或操作型存储过程</param>
		////		/// <param name="connection">隐示Connection连接对象</param>
		////		public int ExeSql(string p_CommandText, System.Data.OleDb.OleDbConnection p_Connection)
		////		{
		//////			if (p_Connection.GetType().ToString() == "System.Data.SqlClient.SqlConnection")
		//////			{
		//////				return ExeSql(p_CommandText,(System.Data.SqlClient.SqlConnection)p_Connection);
		//////			}
		//////			else
		//////			{
		////				return ExeSql(p_CommandText,p_Connection);
		//////			}
		////		}
		//
		//		/// <summary>
		//		/// 用指定连接执行操作更新查询SQL语句(DELETE/INSERT/UPDATE),返回值：-1:失败    >=0:成功，并返回执行的行数
		//		/// </summary>
		//		/// <Info>
		//		///		<作者>周方勇</作者>
		//		///		<创建日期>2002-10-05</创建日期>
		//		///		<修改日期>2003-04-15</修改日期>
		//		///		<其它说明>无</其它说明>
		//		/// </Info>
		//		/// <Input>
		//		///		<param name="strSQL">更新查询SQL语句(DELETE/INSERT/UPDATE)或执行型存储过程</param>
		//		///		<param name="Connection">数据库连接</param>
		//		/// </Input>   
		//		/// <Other>
		//		/// 这里将定义的_SqlCmd、_OleDbCmd注释掉主要是用已定义类的command对象，便于事务执行，要独立运行，去掉定义注释。
		//		/// </Other>
		//		/// <returns>返回值：-1:失败    >=0:成功，并返回执行的行数</returns>
		//
		//		public int ExecuteSql(string strSQL , object Connection)
		//		{
		//			//define string variable for get SQL type...
		//			string strType;
		//			//define effected values for Exeute SQL . Default Value is -1 that show execute failuere.....
		//			int intEffect=-1;
		//			//define Err info...
		//			string strErrInfo="";
		//			//define bool variable for check SQL is StoredProcedure or not
		//			bool blnStoredProcedure;
		//
		//			//define commmad object for Exeute SQL...
		//			/*
		//			System.Data.SqlClient.SqlCommand _SqlCmd=new System.Data.SqlClient.SqlCommand();
		//			System.Data.OleDb.OleDbCommand _OleDbCmd= new System.Data.OleDb.OleDbCommand();
		//			*/
		//
		//			//检查第一参数//DELETE/INSERT/UPDATE			
		//			strType = strSQL.Substring(0, 6).ToUpper();
		//			
		//			if (strType != "DELETE" && strType != "INSERT" && strType != "UPDATE")
		//			{
		//				//return -1;
		//				blnStoredProcedure = true;
		//			}
		//			else
		//			{
		//				blnStoredProcedure = false;
		//			}
		//
		//			//Err.Clear()
		//
		//			//检查第二参数是否为数据库连接对象
		//			if (Connection.GetType().ToString()!="System.Data.SqlClient.SqlConnection" && Connection.GetType().ToString()!="System.Data.OleDb.OleDbConnection")				 
		//				throw new System.Exception("方法ExecuteSql(string,object)第二参数\n必须是类型为System.Data.SqlClient.SqlConnection或者\nSystem.Data.OleDb.OleDbConnection的数据库连接对象。");
		//
		//			try
		//			{
		//				if (Connection.GetType().ToString()  ==  "System.Data.SqlClient.SqlConnection")
		//				{
		//					_SqlCmd.Connection = (System.Data.SqlClient.SqlConnection)Connection;
		//						
		//					if (_SqlCmd.Connection.State!=System.Data.ConnectionState.Open)
		//						return -1;
		//
		//					_SqlCmd.CommandText = strSQL;
		//					
		//					if (blnStoredProcedure  ==  true)
		//						_SqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
		//					else
		//						_SqlCmd.CommandType = System.Data.CommandType.Text;
		//
		//					intEffect = _SqlCmd.ExecuteNonQuery();
		//				}
		//				else if(Connection.GetType().ToString()  ==  "System.Data.OleDb.OleDbConnection")
		//				{
		//					_OleDbCmd.Connection = (System.Data.OleDb.OleDbConnection)Connection;
		//					if (_OleDbCmd.Connection.State!=System.Data.ConnectionState.Open)
		//						return -1;
		//						
		//					_OleDbCmd.CommandText = strSQL;
		//
		//					if (blnStoredProcedure  ==  true)
		//						_OleDbCmd.CommandType = System.Data.CommandType.StoredProcedure;
		//					else
		//						_OleDbCmd.CommandType = System.Data.CommandType.Text;
		//
		//					intEffect = _OleDbCmd.ExecuteNonQuery();
		//				}
		//			}
		//
		//			catch(System.Exception ex)
		//			{			                
		//				strErrInfo="错误提示：更新数据库失败！" + "\n" + ex.Message;
		//			}	
		//
		//			finally
		//			{
		//				if (strErrInfo!="")
		//					System.Windows.Forms.MessageBox.Show(strErrInfo,"提示",System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Warning);
		//				/*
		//				 //释放资源，返回
		//				_SqlCmd = null;
		//				_OleDbCmd = null;
		//				*/
		//			}
		//			return intEffect;
		//		}//End Function








	}
}
