代码改变世界

一个C#操作Oracle的通用类

2008-07-01 20:39  马伟  阅读(2665)  评论(1编辑  收藏  举报
   前段时间,因为开发一个项目需要Oracle10g数据库,所以就快速写了一个Oracle的通用类,希望各位网友参考!

using System;
using System.Data;
using System.Data.OracleClient;
using System.Web.UI.WebControls;
namespace SiFenManager.Util
{
 /// <summary>
 /// 数据库通用操作类
 /// </summary>
 public class Database
 {
  protected  OracleConnection con;//连接对象

  public Database()
  {
   con=new OracleConnection(DafangFramework.AppConfig.DataBaseConnectionString);
  }

  public Database(string constr)
  {
   con=new OracleConnection(constr);
  }

  #region 打开数据库连接
  /// <summary>
  /// 打开数据库连接
  /// </summary>
  private  void Open()
  {
   //打开数据库连接
   if(con.State==ConnectionState.Closed)
   {
    try
    {
     //打开数据库连接
     con.Open();
    }
    catch(Exception e)
    {
     throw e;
    }
    
   }
  }
  #endregion

  #region 关闭数据库连接
  /// <summary>
  /// 关闭数据库连接
  /// </summary>
  private  void Close()
  {   
   //判断连接的状态是否已经打开
   if(con.State==ConnectionState.Open)
   {
    con.Close();
   }
  }
  #endregion

  #region 执行查询语句,返回OracleDataReader ( 注意:调用该方法后,一定要对OracleDataReader进行Close )
  /// <summary>  
  /// 执行查询语句,返回OracleDataReader ( 注意:调用该方法后,一定要对OracleDataReader进行Close )  
  /// </summary>  
  /// <param name="sql">查询语句</param>  
  /// <returns>OracleDataReader</returns>  
  public  OracleDataReader ExecuteReader(string sql)  
  {  
   OracleDataReader myReader;
   Open();
   OracleCommand cmd = new OracleCommand(sql, con);  
   myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
   return myReader;  
   
  }  
  #endregion

  #region 执行带参数的SQL语句  
  /// <summary>  
  /// 执行SQL语句,返回影响的记录数  
  /// </summary>  
  /// <param name="sql">SQL语句</param>  
  /// <returns>影响的记录数</returns>  
  public  int ExecuteSql(string sql, params OracleParameter[] cmdParms)  
  {  
    
   OracleCommand cmd = new OracleCommand();
  {  
   try 
   {  
    PrepareCommand(cmd, con, null, sql, cmdParms);  
    int rows = cmd.ExecuteNonQuery();  
    cmd.Parameters.Clear();  
    return rows;  
   }  
   catch (System.Data.OracleClient.OracleException e)  
   {  
    throw e;  
   }  
  }  
    
  }  
  #endregion

  #region 执行带参数的SQL语句  
  /// <summary>  
  /// 执行不带参数的SQL语句 
  /// </summary>  
  /// <param name="sql">SQL语句</param>     
  public  void ExecuteSql(string sql)  
  {       
   OracleCommand cmd = new OracleCommand(sql,con);  
   try 
   {  
    Open();
    cmd.ExecuteNonQuery();
    Close();
   }  
   catch (System.Data.OracleClient.OracleException e)  
   {  
    Close();
    throw e;  
   }     
  }  
  #endregion

  #region 执行SQL语句,返回数据到DataSet中
  /// <summary>
  /// 执行SQL语句,返回数据到DataSet中
  /// </summary>
  /// <param name="sql">sql语句</param>
  /// <returns>返回DataSet</returns>
  public  DataSet GetDataSet(string sql)
  {
   DataSet ds=new DataSet();
   try
   {
    Open();//打开数据连接
    OracleDataAdapter adapter=new OracleDataAdapter(sql,con);
    adapter.Fill(ds);
   }
   catch//(Exception ex)
   {
    
   }
   finally
   {
    Close();//关闭数据库连接
   }
   
   return ds;
  }
  #endregion
  
  #region 执行SQL语句,返回数据到自定义DataSet中
  /// <summary>
  /// 执行SQL语句,返回数据到DataSet中
  /// </summary>
  /// <param name="sql">sql语句</param>
  /// <param name="DataSetName">自定义返回的DataSet表名</param>
  /// <returns>返回DataSet</returns>
  public  DataSet GetDataSet(string sql,string DataSetName)
  {
   DataSet ds=new DataSet();
   Open();//打开数据连接
   OracleDataAdapter adapter=new OracleDataAdapter(sql,con);
   adapter.Fill(ds,DataSetName);
   Close();//关闭数据库连接
   return ds;
  }
  #endregion

  #region 执行Sql语句,返回带分页功能的自定义dataset
  /// <summary>
  /// 执行Sql语句,返回带分页功能的自定义dataset
  /// </summary>
  /// <param name="sql">Sql语句</param>
  /// <param name="PageSize">每页显示记录数</param>
  /// <param name="CurrPageIndex">当前页</param>
  /// <param name="DataSetName">返回dataset表名</param>
  /// <returns>返回DataSet</returns>
  public  DataSet GetDataSet(string sql,int PageSize,int CurrPageIndex,string DataSetName)
  {
   DataSet ds=new DataSet();
   Open();//打开数据连接
   OracleDataAdapter adapter=new OracleDataAdapter(sql,con);
   adapter.Fill(ds,PageSize * (CurrPageIndex - 1), PageSize,DataSetName);
   Close();//关闭数据库连接
   return ds;
  }
  #endregion

  #region 执行SQL语句,返回记录总数
  /// <summary>
  /// 执行SQL语句,返回记录总数
  /// </summary>
  /// <param name="sql">sql语句</param>
  /// <returns>返回记录总条数</returns>
  public  int GetRecordCount(string sql)
  {
   int recordCount = 0;
   Open();//打开数据连接
   OracleCommand command = new OracleCommand(sql,con);
   OracleDataReader dataReader = command.ExecuteReader();
   while(dataReader.Read())
   {
    recordCount++;
   }
   dataReader.Close();
   Close();//关闭数据库连接
   return recordCount;
  }
  #endregion
      
  #region 统计某表记录总数
  /// <summary>
  /// 统计某表记录总数
  /// </summary>
  /// <param name="KeyField">主键/索引键</param>
  /// <param name="TableName">数据库.用户名.表名</param>
  /// <param name="Condition">查询条件</param>
  /// <returns>返回记录总数</returns>
  public  int GetRecordCount(string keyField, string tableName, string condition)
  {
   int RecordCount = 0;
   string sql = "select count(" + keyField + ") as count from " + tableName + " " + condition;
   DataSet ds = GetDataSet(sql);
   if (ds.Tables[0].Rows.Count > 0)
   {
    RecordCount =Convert.ToInt32(ds.Tables[0].Rows[0][0]);
   }
   ds.Clear();
   ds.Dispose();
   return RecordCount;
  }
  /// <summary>
  /// 统计某表记录总数
  /// </summary>
  /// <param name="Field">可重复的字段</param>
  /// <param name="tableName">数据库.用户名.表名</param>
  /// <param name="condition">查询条件</param>
  /// <param name="flag">字段是否主键</param>
  /// <returns>返回记录总数</returns>
  public  int GetRecordCount(string Field, string tableName, string condition, bool flag)
  {
   int RecordCount = 0;
   if (flag)
   {
    RecordCount = GetRecordCount(Field, tableName, condition);
   }
   else
   {
    string sql = "select count(distinct(" + Field + ")) as count from " + tableName + " " + condition;
    DataSet ds = GetDataSet(sql);
    if (ds.Tables[0].Rows.Count > 0)
    {
     RecordCount = Convert.ToInt32(ds.Tables[0].Rows[0][0]);
    }
    ds.Clear();
    ds.Dispose();
   }
   return RecordCount;
  }
  #endregion

  #region 统计某表分页总数
  /// <summary>
  /// 统计某表分页总数
  /// </summary>
  /// <param name="keyField">主键/索引键</param>
  /// <param name="tableName">表名</param>
  /// <param name="condition">查询条件</param>
  /// <param name="pageSize">页宽</param>
  /// <param name="RecordCount">记录总数</param>
  /// <returns>返回分页总数</returns>
  public  int GetPageCount(string keyField, string tableName, string condition, int pageSize, int RecordCount)
  {
   int PageCount = 0;
   PageCount = (RecordCount % pageSize) > 0 ? (RecordCount / pageSize) + 1 : RecordCount / pageSize;
   if (PageCount < 1) PageCount = 1;
   return PageCount;
  }
  /// <summary>
  /// 统计某表分页总数
  /// </summary>
  /// <param name="keyField">主键/索引键</param>
  /// <param name="tableName">表名</param>
  /// <param name="condition">查询条件</param>
  /// <param name="pageSize">页宽</param>
  /// <returns>返回页面总数</returns>
  public  int GetPageCount(string keyField, string tableName, string condition, int pageSize, ref int RecordCount)
  {
   RecordCount = GetRecordCount(keyField, tableName, condition);
   return GetPageCount(keyField, tableName, condition, pageSize, RecordCount);
  }
  /// <summary>
  /// 统计某表分页总数
  /// </summary>
  /// <param name="Field">可重复的字段</param>
  /// <param name="tableName">表名</param>
  /// <param name="condition">查询条件</param>
  /// <param name="pageSize">页宽</param>
  /// <param name="flag">是否主键</param>
  /// <returns>返回页页总数</returns>
  public  int GetPageCount(string Field, string tableName, string condition, ref int RecordCount, int pageSize, bool flag)
  {
   RecordCount = GetRecordCount(Field, tableName, condition, flag);
   return GetPageCount(Field, tableName, condition, pageSize, ref RecordCount);
  }
  #endregion

  #region Sql分页函数
  /// <summary>
  /// 构造分页查询SQL语句
  /// </summary>
  /// <param name="KeyField">主键</param>
  /// <param name="FieldStr">所有需要查询的字段(field1,field2...)</param>
  /// <param name="TableName">库名.拥有者.表名</param>
  /// <param name="where">查询条件1(where ...)</param>
  /// <param name="order">排序条件2(order by ...)</param>
  /// <param name="CurrentPage">当前页号</param>
  /// <param name="PageSize">页宽</param>
  /// <returns>SQL语句</returns>
  public  string JoinPageSQL(string KeyField, string FieldStr, string TableName, string Where, string Order, int CurrentPage, int PageSize)
  {
   string sql = null;
   if (CurrentPage == 1)
   {
    sql = "select  " + CurrentPage * PageSize + " " + FieldStr + " from " + TableName + " " + Where + " " + Order + " ";
   }
   else
   {
    sql = "select * from (";
    sql += "select  " + CurrentPage * PageSize + " " + FieldStr + " from " + TableName + " " + Where + " " + Order + ") a ";
    sql += "where " + KeyField + " not in (";
    sql += "select  " + (CurrentPage - 1) * PageSize + " " + KeyField + " from " + TableName + " " + Where + " " + Order + ")";
   }
   return sql;
  }
  /// <summary>
  /// 构造分页查询SQL语句
  /// </summary>
  /// <param name="Field">字段名(非主键)</param>
  /// <param name="TableName">库名.拥有者.表名</param>
  /// <param name="where">查询条件1(where ...)</param>
  /// <param name="order">排序条件2(order by ...)</param>
  /// <param name="CurrentPage">当前页号</param>
  /// <param name="PageSize">页宽</param>
  /// <returns>SQL语句</returns>
  public  string JoinPageSQL(string Field, string TableName,string Where, string Order, int CurrentPage, int PageSize)
  {
   string sql = null;
   if (CurrentPage == 1)
   {
    sql = "select rownum " + CurrentPage * PageSize + " " + Field + " from " + TableName + " " + Where + " " + Order + " group by " + Field;
   }
   else
   {
    sql = "select * from (";
    sql += "select rownum " + CurrentPage * PageSize + " " + Field + " from " + TableName + " " + Where + " " + Order + " group by " + Field + " ) a ";
    sql += "where " + Field + " not in (";
    sql += "select rownum " + (CurrentPage - 1) * PageSize + " " + Field + " from " + TableName + " " + Where + " " + Order + " group by " + Field + ")";
   }
   return sql;
  }
  #endregion

  #region 根据系统时间动态生成各种查询语句(现已经注释掉,以备以后使用)
  //  #region 根据查询时间的条件,动态生成查询语句
  //  /// <summary>
  //  /// 根据查询时间的条件,动态生成查询语句
  //  /// </summary>
  //  /// <param name="starttime">开始时间</param>
  //  /// <param name="endtime">结束时间</param>
  //  /// <param name="dw">单位</param>
  //  /// <param name="startxsl">开始线损率</param>
  //  /// <param name="endxsl">结束线损率</param>
  //  /// <param name="danwei">单位字段</param>
  //  /// <param name="xiansunlv">线损率字段</param>
  //  /// <param name="tablehz">表后缀</param>
  //  /// <returns>SQL语句</returns>
  //  public  string SQL(DateTime starttime,DateTime endtime,string dw,float startxsl,float endxsl,string danwei,string xiansunlv,string tablehz)
  //  {
  //   
  //   string sql=null;
  //   //将输入的时间格式转换成固定的格式"yyyy-mm-dd"
  //   string zstarttime=starttime.GetDateTimeFormats('D')[1].ToString();
  //   string zendtime=endtime.GetDateTimeFormats('D')[1].ToString();
  //   string nTime=DateTime.Now.GetDateTimeFormats('D')[1].ToString();
  //
  //
  //   //取日期值的前六位,及年月值
  //   string sTime=zstarttime.Substring(0,4)+zstarttime.Substring(5,2);
  //   string eTime=zendtime.Substring(0,4)+zendtime.Substring(5,2);
  //   string nowTime=nTime.Substring(0,4)+nTime.Substring(5,2);
  //   //分别取日期的年和月
  //   int sy=Convert.ToInt32(zstarttime.Substring(0,4));
  //   int ey=Convert.ToInt32(zendtime.Substring(0,4));
  //   int sm=Convert.ToInt32(zstarttime.Substring(5,2));
  //   int em=Convert.ToInt32(zendtime.Substring(5,2));
  //   //相关变量定义
  //   int s;
  //   int e;
  //   int i;
  //   int j;
  //   int js;
  //   int nz;
  //   string x;
  //   //一,取当前表生成SQL语句
  //   if(sTime==nowTime&&eTime==nowTime)
  //   {
  //    sql="select  * from "+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" ";
  //   }
  //    //二,取当前表和其他表生成SQL语句
  //   else if(sTime==nowTime&&eTime!=nowTime)
  //   {
  //    sql="select  * from "+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" "+"union"+" ";
  //    //如果年份相等
  //    if(sy==ey)
  //    {
  //     s=Convert.ToInt32(sTime);
  //     e=Convert.ToInt32(eTime);
  //     for(i=s+1;i<e;i++)
  //     {
  //      i=i++;
  //      sql+="select  * from "+i.ToString()+'_'+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" "+"union"+" ";
  //     }
  //     sql+="select  * from "+e.ToString()+'_'+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" ";
  //    }
  //     //结束年份大于开始年份
  //    else
  //    {
  //     //1,先循环到起始时间和起始时间的12月
  //     s=Convert.ToInt32(sTime);
  //     x=zstarttime.Substring(0,4)+"12";
  //     nz=Convert.ToInt32(x);
  //     for(i=s+1;i<=nz;i++)
  //     {
  //      i=i++;
  //      sql+="select  * from "+i.ToString()+'_'+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" "+"union"+" ";
  //     }
  //     //2,循环两者相差年份
  //     for(i=sy+1;i<ey;i++)
  //     {
  //     
  //      for(j=1;j<=12;j++)
  //      {
  //       if(j<10)
  //       {
  //        sql+="select  * from "+i.ToString()+"0"+j.ToString()+'_'+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" "+"union"+" ";
  //       }
  //       else
  //       {
  //        sql+="select  * from "+i.ToString()+j.ToString()+'_'+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" "+"union"+" ";
  //       }
  //      }
  //     }
  //     //3,循环到结束的月份
  //     js=Convert.ToInt32(zendtime.Substring(0,4)+"00");
  //     for(i=js;i<Convert.ToInt32(eTime);i++)
  //     {
  //      i++;
  //      sql+="select  * from "+i.ToString()+'_'+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" "+"union"+" ";
  //
  //     }
  //     sql+="select  * from "+eTime.ToString()+'_'+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" ";
  //    
  //    }
  //   }
  //    //三,取其他表生成生成SQL语句
  //   else
  //   {
  //    //1,先循环到起始时间和起始时间的12月
  //    s=Convert.ToInt32(sTime);
  //    x=zstarttime.Substring(0,4)+"12";
  //    nz=Convert.ToInt32(x);
  //    for(i=s;i<=nz;i++)
  //    {
  //     i=i++;
  //     sql+="select  * from "+i.ToString()+'_'+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" "+"union"+" ";
  //    }
  //    //2,循环两者相差年份
  //    for(i=sy+1;i<ey;i++)
  //    {
  //     
  //     for(j=1;j<=12;j++)
  //     {
  //      if(j<10)
  //      {
  //       sql+="select  * from "+i.ToString()+"0"+j.ToString()+'_'+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" "+"union"+" ";
  //      }
  //      else
  //      {
  //       sql+="select  * from "+i.ToString()+j.ToString()+'_'+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" "+"union"+" ";
  //      }
  //     }
  //    }
  //    //3,循环到结束的月份
  //    js=Convert.ToInt32(zendtime.Substring(0,4)+"00");
  //    for(i=js;i<Convert.ToInt32(eTime);i++)
  //    {
  //     i++;
  //     sql+="select  * from "+i.ToString()+'_'+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" "+"union"+" ";
  //
  //    }
  //    sql+="select  * from "+eTime.ToString()+'_'+tablehz+" "+"where"+" "+danwei+"="+dw+" "+" "+"and"+" "+xiansunlv+">="+startxsl+" "+"and"+" "+xiansunlv+"<="+endxsl+" ";
  //    
  //   }
  //   return sql;
  //  }
  //  #endregion
  //
  //  #region 根据查询时间的条件,动态生成查询语句
  //  /// <summary>
  //  /// 根据查询时间的条件,动态生成查询语句
  //  /// </summary>
  //  /// <param name="starttime">开始时间</param>
  //  /// <param name="endtime">结束时间</param>
  //  /// <param name="zhiduan">查询字段</param>
  //  /// <param name="tiaojiao">查询条件</param>
  //  /// <param name="tablehz">表后缀</param>
  //  /// <returns>SQL语句</returns>
  //  public  string SQL(DateTime starttime,DateTime endtime,string zhiduan,string tiaojiao,string tablehz)
  //  {
  //   
  //   string sql=null;
  //   //将输入的时间格式转换成固定的格式"yyyy-mm-dd"
  //   string zstarttime=starttime.GetDateTimeFormats('D')[1].ToString();
  //   string zendtime=endtime.GetDateTimeFormats('D')[1].ToString();
  //   string nTime=DateTime.Now.GetDateTimeFormats('D')[1].ToString();
  //
  //
  //   //取日期值的前六位,及年月值
  //   string sTime=zstarttime.Substring(0,4)+zstarttime.Substring(5,2);
  //   string eTime=zendtime.Substring(0,4)+zendtime.Substring(5,2);
  //   string nowTime=nTime.Substring(0,4)+nTime.Substring(5,2);
  //   //分别取日期的年和月
  //   int sy=Convert.ToInt32(zstarttime.Substring(0,4));
  //   int ey=Convert.ToInt32(zendtime.Substring(0,4));
  //   int sm=Convert.ToInt32(zstarttime.Substring(5,2));
  //   int em=Convert.ToInt32(zendtime.Substring(5,2));
  //   //相关变量定义
  //   int s;
  //   int e;
  //   int i;
  //   int j;
  //   int js;
  //   int nz;
  //   string x;
  //   //一,取当前表生成SQL语句
  //   if(sTime==nowTime&&eTime==nowTime)
  //   {
  //    sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"where"+" "+tiaojiao+" ";
  //    
  //   }
  //    //二,取当前表和其他表生成SQL语句
  //   else if(sTime==nowTime&&eTime!=nowTime)
  //   {
  //    sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
  // 
  //    //如果年份相等
  //    if(sy==ey)
  //    {
  //     s=Convert.ToInt32(sTime);
  //     e=Convert.ToInt32(eTime);
  //     for(i=s+1;i<e;i++)
  //     {
  //      i=i++;
  //      sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+'_'+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
  //      
  //     }
  //     sql+="select"+" "+zhiduan+" "+"from"+" "+e.ToString()+'_'+tablehz+" "+"where"+" "+tiaojiao+" ";
  //     
  //    }
  //     //结束年份大于开始年份
  //    else
  //    {
  //     //1,先循环到起始时间和起始时间的12月
  //     s=Convert.ToInt32(sTime);
  //     x=zstarttime.Substring(0,4)+"12";
  //     nz=Convert.ToInt32(x);
  //     for(i=s+1;i<=nz;i++)
  //     {
  //      i=i++;
  //      sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+'_'+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
  //     
  //     }
  //     //2,循环两者相差年份
  //     for(i=sy+1;i<ey;i++)
  //     {
  //     
  //      for(j=1;j<=12;j++)
  //      {
  //       if(j<10)
  //       {
  //        sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+"0"+j.ToString()+'_'+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
  //      
  //       }
  //       else
  //       {
  //        sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+j.ToString()+'_'+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
  //       }
  //      }
  //     }
  //     //3,循环到结束的月份
  //     js=Convert.ToInt32(zendtime.Substring(0,4)+"00");
  //     for(i=js;i<Convert.ToInt32(eTime);i++)
  //     {
  //      i++;
  //      sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+'_'+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
  //
  //     }
  //     sql+="select"+" "+zhiduan+" "+"from"+" "+eTime.ToString()+'_'+tablehz+" "+"where"+" "+tiaojiao+" ";
  //    
  //    }
  //   }
  //    //三,取其他表生成生成SQL语句
  //   else
  //   {
  //    //1,先循环到起始时间和起始时间的12月
  //    s=Convert.ToInt32(sTime);
  //    x=zstarttime.Substring(0,4)+"12";
  //    nz=Convert.ToInt32(x);
  //    for(i=s;i<=nz;i++)
  //    {
  //     i=i++;
  //     sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+'_'+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
  //     
  //    }
  //    //2,循环两者相差年份
  //    for(i=sy+1;i<ey;i++)
  //    {
  //     
  //     for(j=1;j<=12;j++)
  //     {
  //      if(j<10)
  //      {
  //       sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+"0"+j.ToString()+'_'+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
  //      
  //      }
  //      else
  //      {
  //       sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+j.ToString()+'_'+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
  //      }
  //     }
  //    }
  //    //3,循环到结束的月份
  //    js=Convert.ToInt32(zendtime.Substring(0,4)+"00");
  //    for(i=js;i<Convert.ToInt32(eTime);i++)
  //    {
  //     i++;
  //     sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+'_'+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
  //
  //    }
  //    sql+="select"+" "+zhiduan+" "+"from"+" "+eTime.ToString()+'_'+tablehz+" "+"where"+" "+tiaojiao+" ";
  //    
  //   }
  //   return sql;
  //  }
  //  #endregion
  //
  //  #region 根据查询时间的条件,动态生成查询语句
  //  /// <summary>
  //  /// 根据查询时间的条件,动态生成查询语句
  //  /// </summary>
  //  /// <param name="starttime">开始时间</param>
  //  /// <param name="endtime">结束时间</param>
  //  /// <param name="zhiduan">查询字段</param>
  //  /// <param name="tablehz">表后缀</param>
  //  /// <returns>SQL语句</returns>
  //  public  string SQL(DateTime starttime,DateTime endtime,string zhiduan,string tablehz)
  //  {
  //   
  //   string sql=null;
  //   //将输入的时间格式转换成固定的格式"yyyy-mm-dd"
  //   string zstarttime=starttime.GetDateTimeFormats('D')[1].ToString();
  //   string zendtime=endtime.GetDateTimeFormats('D')[1].ToString();
  //   string nTime=DateTime.Now.GetDateTimeFormats('D')[1].ToString();
  //
  //
  //   //取日期值的前六位,及年月值
  //   string sTime=zstarttime.Substring(0,4)+zstarttime.Substring(5,2);
  //   string eTime=zendtime.Substring(0,4)+zendtime.Substring(5,2);
  //   string nowTime=nTime.Substring(0,4)+nTime.Substring(5,2);
  //   //分别取日期的年和月
  //   int sy=Convert.ToInt32(zstarttime.Substring(0,4));
  //   int ey=Convert.ToInt32(zendtime.Substring(0,4));
  //   int sm=Convert.ToInt32(zstarttime.Substring(5,2));
  //   int em=Convert.ToInt32(zendtime.Substring(5,2));
  //   //相关变量定义
  //   int s;
  //   int e;
  //   int i;
  //   int j;
  //   int js;
  //   int nz;
  //   string x;
  //   //一,取当前表生成SQL语句
  //   if(sTime==nowTime&&eTime==nowTime)
  //   {
  //    sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" ";
  //    
  //   }
  //    //二,取当前表和其他表生成SQL语句
  //   else if(sTime==nowTime&&eTime!=nowTime)
  //   {
  //    sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" ";
  // 
  //    //如果年份相等
  //    if(sy==ey)
  //    {
  //     s=Convert.ToInt32(sTime);
  //     e=Convert.ToInt32(eTime);
  //     for(i=s+1;i<e;i++)
  //     {
  //      i=i++;
  //      sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+'_'+tablehz+" "+" "+"union"+" ";
  //      
  //     }
  //     sql+="select"+" "+zhiduan+" "+"from"+" "+e.ToString()+'_'+tablehz+" ";
  //     
  //    }
  //     //结束年份大于开始年份
  //    else
  //    {
  //     //1,先循环到起始时间和起始时间的12月
  //     s=Convert.ToInt32(sTime);
  //     x=zstarttime.Substring(0,4)+"12";
  //     nz=Convert.ToInt32(x);
  //     for(i=s+1;i<=nz;i++)
  //     {
  //      i=i++;
  //      sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+'_'+tablehz+" "+"union"+" ";
  //     
  //     }
  //     //2,循环两者相差年份
  //     for(i=sy+1;i<ey;i++)
  //     {
  //     
  //      for(j=1;j<=12;j++)
  //      {
  //       if(j<10)
  //       {
  //        sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+"0"+j.ToString()+'_'+tablehz+" "+"union"+" ";
  //      
  //       }
  //       else
  //       {
  //        sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+j.ToString()+'_'+tablehz+" "+"union"+" ";
  //       }
  //      }
  //     }
  //     //3,循环到结束的月份
  //     js=Convert.ToInt32(zendtime.Substring(0,4)+"00");
  //     for(i=js;i<Convert.ToInt32(eTime);i++)
  //     {
  //      i++;
  //      sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+'_'+tablehz+" "+"union"+" ";
  //
  //     }
  //     sql+="select"+" "+zhiduan+" "+"from"+" "+eTime.ToString()+'_'+tablehz+" ";
  //    
  //    }
  //   }
  //    //三,取其他表生成生成SQL语句
  //   else
  //   {
  //    //1,先循环到起始时间和起始时间的12月
  //    s=Convert.ToInt32(sTime);
  //    x=zstarttime.Substring(0,4)+"12";
  //    nz=Convert.ToInt32(x);
  //    for(i=s;i<=nz;i++)
  //    {
  //     i=i++;
  //     sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+'_'+tablehz+" "+"union"+" ";
  //     
  //    }
  //    //2,循环两者相差年份
  //    for(i=sy+1;i<ey;i++)
  //    {
  //     
  //     for(j=1;j<=12;j++)
  //     {
  //      if(j<10)
  //      {
  //       sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+"0"+j.ToString()+'_'+tablehz+" "+"union"+" ";
  //      
  //      }
  //      else
  //      {
  //       sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+j.ToString()+'_'+tablehz+" "+"union"+" ";
  //      }
  //     }
  //    }
  //    //3,循环到结束的月份
  //    js=Convert.ToInt32(zendtime.Substring(0,4)+"00");
  //    for(i=js;i<Convert.ToInt32(eTime);i++)
  //    {
  //     i++;
  //     sql+="select"+" "+zhiduan+" "+"from"+" "+i.ToString()+'_'+tablehz+" "+"union"+" ";
  //
  //    }
  //    sql+="select"+" "+zhiduan+" "+"from"+" "+eTime.ToString()+'_'+tablehz+" ";
  //    
  //   }
  //   return sql;
  //  }
  //  #endregion
  //
  //  #region 根据查询时间的条件,动态生成查询语句
  //  /// <summary>
  //  /// 根据查询时间的条件,动态生成查询语句
  //  /// </summary>
  //  /// <param name="zhiduan">查询字段</param>
  //  /// <param name="tablehz">表后缀</param>
  //  /// <returns>SQL语句</returns>
  //  public  string SQL(DateTime time,string zhiduan,string tablehz)
  //  {
  //   string sql=null;
  //   //将输入的时间格式转换成固定的格式"yyyy-mm-dd"
  //   string stime=time.GetDateTimeFormats('D')[1].ToString();
  //   string nTime=DateTime.Now.GetDateTimeFormats('D')[1].ToString();
  //   //取日期值的前六位,及年月值
  //   string szTime=stime.Substring(0,4)+stime.Substring(5,2);
  //   string nowTime=nTime.Substring(0,4)+nTime.Substring(5,2);
  //   //一,取当前表生成SQL语句
  //   if(szTime==nowTime)
  //   {
  //    sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" ";
  //    
  //   }
  //   else
  //   {
  //    sql="select"+" "+zhiduan+" "+"from"+" "+szTime+tablehz+" ";
  //    
  //   }
  //   return sql;
  //  }
  //  #endregion
  //
  //  #region 根据查询时间的条件,动态生成修改语句
  //  /// <summary>
  //  /// 根据查询时间的条件,动态生成修改语句
  //  /// </summary>
  //  /// <param name="zhiduan">修改字段</param>
  //  /// <param name="tiaojian">条件</param>
  //  /// <param name="tablehz">表后缀</param>
  //  /// <returns>SQL语句</returns>
  //  public  string Update(DateTime time,string zhiduan,string tiaojian,string tablehz)
  //  {
  //   string sql=null;
  //   //将输入的时间格式转换成固定的格式"yyyy-mm-dd"
  //   string stime=time.GetDateTimeFormats('D')[1].ToString();
  //   string nTime=DateTime.Now.GetDateTimeFormats('D')[1].ToString();
  //   //取日期值的前六位,及年月值
  //   string szTime=stime.Substring(0,4)+stime.Substring(5,2);
  //   string nowTime=nTime.Substring(0,4)+nTime.Substring(5,2);
  //   //一,取当前表生成SQL语句
  //   if(szTime==nowTime)
  //   {
  //    sql="update"+" "+tablehz+" "+"set"+" "+zhiduan+" "+"where"+" "+tiaojian+" ";
  //    
  //   }
  //   else
  //   {
  //    sql="update"+" "+szTime+tablehz+" "+"set"+" "+zhiduan+" "+"where"+" "+tiaojian+" ";
  //    
  //    
  //   }
  //   return sql;
  //  }
  //  #endregion
  //
  //        #region 根据查询时间的条件,动态生成表名
  //  /// <summary>
  //  /// 根据查询时间的条件,动态生成表名
  //  /// </summary>
  //  /// <param name="tablehz">表后缀</param>
  //  /// <returns>tablename</returns>
  //  public  string table(DateTime time,string tablehz)
  //  {
  //   string table=null;
  //   //将输入的时间格式转换成固定的格式"yyyy-mm-dd"
  //   string stime=time.GetDateTimeFormats('D')[1].ToString();
  //   string nTime=DateTime.Now.GetDateTimeFormats('D')[1].ToString();
  //   //取日期值的前六位,及年月值
  //   string szTime=stime.Substring(0,4)+stime.Substring(5,2);
  //   string nowTime=nTime.Substring(0,4)+nTime.Substring(5,2);
  //   //一,取当前表生成SQL语句
  //   if(szTime==nowTime)
  //   {
  //    table=tablehz;
  //    
  //   }
  //   else
  //   {
  //    table=szTime+tablehz;
  //    
  //    
  //   }
  //   return table;
  //  }
  //  #endregion
  #endregion

  #region 根据数据库时间,动态生成各种查询语句

  #region 根据查询时间的条件,动态生成查询语句
  /// <summary>
  /// 根据查询时间的条件,动态生成查询语句
  /// </summary>
  /// <param name="starttime">开始时间</param>
  /// <param name="endtime">结束时间</param>
  /// <param name="zhiduan">查询字段</param>
  /// <param name="tiaojiao">查询条件</param>
  /// <param name="tablehz">表后缀</param>
  /// <returns>SQL语句</returns>
  public  string SQL(DateTime starttime,DateTime endtime,string zhiduan,string tiaojiao,string tablehz)
  {
   DataSet ds=new DataSet();
   string sql=null;
   string zstarttime=starttime.GetDateTimeFormats('D')[1].ToString();
   string zendtime=endtime.GetDateTimeFormats('D')[1].ToString();
   

   //取日期值的前六位,及年月值
   string sTime=zstarttime.Substring(0,4)+zstarttime.Substring(5,2);
   string eTime=zendtime.Substring(0,4)+zendtime.Substring(5,2);
   string nowTime=SiFenManager.SFObject.SF_DIC_DATE.GetCurrentMonth();


   //一,取当前表生成SQL语句
   if(sTime==nowTime&&eTime==nowTime)
   {
    sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"where"+" "+tiaojiao+" ";
    
   }
   
    //二,取当前表和其他表生成SQL语句
//   else if(sTime==nowTime&&eTime!=nowTime)
//   {
//    sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
//    
//    ds=SiFenManager.Util.Database.GetSJDSet(sTime,eTime);
//
//    for(int i=1;i<ds.Tables[0].Rows.Count-1;i++)
//    {
//     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
//    }
//    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
//    {
//     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" ";
//    }
//   }

   else if(sTime!=nowTime&&eTime==nowTime)
   {
    ds=GetSJDSet(sTime,eTime);
    for(int i=0;i<ds.Tables[0].Rows.Count-1;i++)
    {
     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
    }
    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
    {
     sql+="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"where"+" "+tiaojiao+" ";
    }
   }
   else
   {
    ds=GetTimeSet(sTime,eTime);
    for(int i=0;i<ds.Tables[0].Rows.Count-1;i++)
    {
     if((ds.Tables[0].Rows[i]["flag"]).ToString()=="1")
     {
      sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
     }
     else
     {
      sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
     }

    }
    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
    {
     if((ds.Tables[0].Rows[i]["flag"]).ToString()=="1")
     {
      sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"where"+" "+tiaojiao+" ";
     }
     else
     {
      sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" ";
     }
     
    }

//    ds=SiFenManager.Util.Database.GetSJDSet(sTime,eTime);
//
//    for(int i=0;i<ds.Tables[0].Rows.Count-1;i++)
//    {
//     
//     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
//    }
//    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
//    {
//     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" ";
//    }
   }

   return sql;  

  }
  #endregion

  #region 根据查询时间的条件,动态生成查询语句
  /// <summary>
  /// 根据查询时间的条件,动态生成查询语句
  /// </summary>
  /// <param name="starttime">开始时间</param>
  /// <param name="endtime">结束时间</param>
  /// <param name="zhiduan">查询字段</param>
  /// <param name="tiaojiao">查询条件</param>
  /// <param name="tablehz">表后缀</param>
  /// <param name="sort">排序</param>
  /// <returns>SQL语句</returns>
  public  string SQL(DateTime starttime,DateTime endtime,string zhiduan,string tiaojiao,string tablehz,string sort)
  {
   DataSet ds=new DataSet();
   string sql=null;
   string zstarttime=starttime.GetDateTimeFormats('D')[1].ToString();
   string zendtime=endtime.GetDateTimeFormats('D')[1].ToString();
   

   //取日期值的前六位,及年月值
   string sTime=zstarttime.Substring(0,4)+zstarttime.Substring(5,2);
   string eTime=zendtime.Substring(0,4)+zendtime.Substring(5,2);
   string nowTime=SiFenManager.SFObject.SF_DIC_DATE.GetCurrentMonth();


   //一,取当前表生成SQL语句
   if(sTime==nowTime&&eTime==nowTime)
   {
    sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"where"+" "+tiaojiao+" "+sort;
    
   }
   
    //二,取当前表和其他表生成SQL语句
    //   else if(sTime==nowTime&&eTime!=nowTime)
    //   {
    //    sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
    //    
    //    ds=SiFenManager.Util.Database.GetSJDSet(sTime,eTime);
    //
    //    for(int i=1;i<ds.Tables[0].Rows.Count-1;i++)
    //    {
    //     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
    //    }
    //    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
    //    {
    //     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" ";
    //    }
    //   }

   else if(sTime!=nowTime&&eTime==nowTime)
   {
    
    ds=GetSJDSet(sTime,eTime);
    for(int i=0;i<1;i++)
    {
     sql+="select * from (select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
    }
    for(int i=1;i<ds.Tables[0].Rows.Count-1;i++)
    {
     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
    }
    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
    {
     sql+="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"where"+" "+tiaojiao+" "+")"+sort;
    }
   }
   else
   {
    ds=GetTimeSet(sTime,eTime);
    for(int i=0;i<1;i++)
    {
     if((ds.Tables[0].Rows[i]["flag"]).ToString()=="1")
     {
      sql="select * from (select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
     }
     else
     {
      sql+="select * from (select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
     }

    }
    for(int i=1;i<ds.Tables[0].Rows.Count-1;i++)
    {
     if((ds.Tables[0].Rows[i]["flag"]).ToString()=="1")
     {
      sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
     }
     else
     {
      sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
     }

    }
    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
    {
     if((ds.Tables[0].Rows[i]["flag"]).ToString()=="1")
     {
      sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"where"+" "+tiaojiao+" "+")"+sort;
     }
     else
     {
      sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" "+")"+sort;
     }
     
    }

    //    ds=SiFenManager.Util.Database.GetSJDSet(sTime,eTime);
    //
    //    for(int i=0;i<ds.Tables[0].Rows.Count-1;i++)
    //    {
    //     
    //     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" "+"union"+" ";
    //    }
    //    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
    //    {
    //     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"where"+" "+tiaojiao+" ";
    //    }
   }

   return sql;  

  }
  #endregion

  #region 根据查询时间的条件,动态生成查询语句
  /// <summary>
  /// 根据查询时间的条件,动态生成查询语句
  /// </summary>
  /// <param name="starttime">开始时间</param>
  /// <param name="endtime">结束时间</param>
  /// <param name="zhiduan">查询字段</param>
  /// <param name="tablehz">表后缀</param>
  /// <returns>SQL语句</returns>
  public  string SQL(DateTime starttime,DateTime endtime,string zhiduan,string tablehz)
  {
   DataSet ds=new DataSet();
   string sql=null;
   //将输入的时间格式转换成固定的格式"yyyy-mm-dd"
   string zstarttime=starttime.GetDateTimeFormats('D')[1].ToString();
   string zendtime=endtime.GetDateTimeFormats('D')[1].ToString();
   

   //取日期值的前六位,及年月值
   string sTime=zstarttime.Substring(0,4)+zstarttime.Substring(5,2);
   string eTime=zendtime.Substring(0,4)+zendtime.Substring(5,2);
   string nowTime=SiFenManager.SFObject.SF_DIC_DATE.GetCurrentMonth();
   

   //一,取当前表生成SQL语句
   if(sTime==nowTime&&eTime==nowTime)
   {
    sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" ";
    
   }
    //二,取当前表和其他表生成SQL语句
//   else if(sTime==nowTime&&eTime!=nowTime)
//   {
//    sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"union"+" ";
//    
//    ds=SiFenManager.Util.Database.GetSJDSet(sTime,eTime);
//
//    for(int i=1;i<ds.Tables[0].Rows.Count-1;i++)
//    {
//     //text[i]+=(ds.Tables[0].Rows[i]["MONTH"]).ToString();
//     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"union"+" ";
//    }
//    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
//    {
//     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz;
//    }
//   }
   else if(sTime!=nowTime&&eTime==nowTime)
   {
    ds=GetSJDSet(sTime,eTime);
    for(int i=0;i<ds.Tables[0].Rows.Count-1;i++)
    {
     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"union"+" ";
    }
    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
    {
     sql+="select"+" "+zhiduan+" "+"from"+" "+tablehz+" ";
    }
   }
   else
   {
    ds=GetTimeSet(sTime,eTime);
    for(int i=0;i<ds.Tables[0].Rows.Count-1;i++)
    {
     if((ds.Tables[0].Rows[i]["flag"]).ToString()=="1")
     {
      sql+="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"union"+" ";
     }
     else
     {
      sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"union"+" ";
     }

    }
    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
    {
     if((ds.Tables[0].Rows[i]["flag"]).ToString()=="1")
     {
      sql+="select"+" "+zhiduan+" "+"from"+" "+tablehz+" ";
     }
     else
     {
      sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz;
     }
     
    }
    //    ds=SiFenManager.Util.Database.GetSJDSet(sTime,eTime);
    //
    //    for(int i=0;i<ds.Tables[0].Rows.Count-1;i++)
    //    {
    //     //text[i]+=(ds.Tables[0].Rows[i]["MONTH"]).ToString();
    //     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"union"+" ";
    //    }
    //    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
    //    {
    //     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz;
    //    }
   }

   return sql;         
  }
  #endregion

  #region 根据查询时间的条件,动态生成查询语句
  /// <summary>
  /// 根据查询时间的条件,动态生成查询语句
  /// </summary>
  /// <param name="starttime">开始时间</param>
  /// <param name="endtime">结束时间</param>
  /// <param name="zhiduan">查询字段</param>
  /// <param name="tablehz">表后缀</param>
  /// <returns>SQL语句</returns>
  public  string OtherSQL(DateTime starttime,DateTime endtime,string zhiduan,string tablehz,string other)
  {
   DataSet ds=new DataSet();
   string sql=null;
   //将输入的时间格式转换成固定的格式"yyyy-mm-dd"
   string zstarttime=starttime.GetDateTimeFormats('D')[1].ToString();
   string zendtime=endtime.GetDateTimeFormats('D')[1].ToString();
   

   //取日期值的前六位,及年月值
   string sTime=zstarttime.Substring(0,4)+zstarttime.Substring(5,2);
   string eTime=zendtime.Substring(0,4)+zendtime.Substring(5,2);
   string nowTime=SiFenManager.SFObject.SF_DIC_DATE.GetCurrentMonth();
   

   //一,取当前表生成SQL语句
   if(sTime==nowTime&&eTime==nowTime)
   {
    sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+other+" ";
    
   }
    //二,取当前表和其他表生成SQL语句
//   else if(sTime==nowTime&&eTime!=nowTime)
//   {
//    sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"union"+" ";
//    
//    ds=SiFenManager.Util.Database.GetSJDSet(sTime,eTime);
//
//    for(int i=1;i<ds.Tables[0].Rows.Count-1;i++)
//    {
//     //text[i]+=(ds.Tables[0].Rows[i]["MONTH"]).ToString();
//     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"union"+" ";
//    }
//    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
//    {
//     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+other+" ";
//    }
//   }
   else if(sTime!=nowTime&&eTime==nowTime)
   {
    ds=GetSJDSet(sTime,eTime);
    for(int i=0;i<ds.Tables[0].Rows.Count-1;i++)
    {
     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"union"+" ";
    }
    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
    {
     sql+="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+other+" ";
    }
   }
   else
   {
    ds=GetTimeSet(sTime,eTime);
    for(int i=0;i<ds.Tables[0].Rows.Count-1;i++)
    {
     if((ds.Tables[0].Rows[i]["flag"]).ToString()=="1")
     {
      sql+="select"+" "+zhiduan+" "+"from"+" "+tablehz+" "+"union"+" ";
     }
     else
     {
      sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"union"+" ";
     }

    }
    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
    {
     if((ds.Tables[0].Rows[i]["flag"]).ToString()=="1")
     {
      sql+="select"+" "+zhiduan+" "+"from"+" "+tablehz+" ";
     }
     else
     {
      sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+other+" ";
     }
     
    }
//    ds=SiFenManager.Util.Database.GetSJDSet(sTime,eTime);
//
//    for(int i=0;i<ds.Tables[0].Rows.Count-1;i++)
//    {
//     //text[i]+=(ds.Tables[0].Rows[i]["MONTH"]).ToString();
//     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+"union"+" ";
//    }
//    for(int i=ds.Tables[0].Rows.Count-1;i<ds.Tables[0].Rows.Count;i++)
//    {
//     sql+="select"+" "+zhiduan+" "+"from"+" "+"M"+(ds.Tables[0].Rows[i]["MONTH"]).ToString()+"_"+tablehz+" "+other+" ";
//    }
   }

   return sql;         
  }
  #endregion

  #region 根据查询时间的条件,动态生成查询语句
  /// <summary>
  /// 根据查询时间的条件,动态生成查询语句
  /// </summary>
  /// <param name="zhiduan">查询字段</param>
  /// <param name="tablehz">表后缀</param>
  /// <returns>SQL语句</returns>
  public  string SQL(DateTime time,string zhiduan,string tablehz)
  {
   string sql=null;
   //将输入的时间格式转换成固定的格式"yyyy-mm-dd"
   string stime=time.GetDateTimeFormats('D')[1].ToString();
   
   //取日期值的前六位,及年月值
   string szTime=stime.Substring(0,4)+stime.Substring(5,2);
   string nowTime=SiFenManager.SFObject.SF_DIC_DATE.GetCurrentMonth();
   //一,取当前表生成SQL语句
   if(SiFenManager.SFObject.SF_DIC_DATE.Exists(szTime))
   {
   
    if(szTime==nowTime)
    {
     sql="select"+" "+zhiduan+" "+"from"+" "+tablehz+" ";
    
    }
    else
    {
     sql="select"+" "+zhiduan+" "+"from"+" "+"M"+szTime+"_"+tablehz+" ";
    
    }
   }
   else
   {
    return null;
   }
   return sql;
  }
  #endregion

  #region 根据查询时间的条件,动态生成修改语句
  /// <summary>
  /// 根据查询时间的条件,动态生成修改语句
  /// </summary>
  /// <param name="zhiduan">修改字段</param>
  /// <param name="tiaojian">条件</param>
  /// <param name="tablehz">表后缀</param>
  /// <returns>SQL语句</returns>
  public  string Update(DateTime time,string zhiduan,string tiaojian,string tablehz)
  {
   string sql=null;
   //将输入的时间格式转换成固定的格式"yyyy-mm-dd"
   string stime=time.GetDateTimeFormats('D')[1].ToString();
   
   //取日期值的前六位,及年月值
   string szTime=stime.Substring(0,4)+stime.Substring(5,2);
   string nowTime=SiFenManager.SFObject.SF_DIC_DATE.GetCurrentMonth();
   //一,取当前表生成SQL语句
   if(szTime==nowTime)
   {
    sql="update"+" "+tablehz+" "+"set"+" "+zhiduan+" "+"where"+" "+tiaojian+" ";
    
   }
   else
   {
    sql="update"+" "+"M"+szTime+"_"+tablehz+" "+"set"+" "+zhiduan+" "+"where"+" "+tiaojian+" ";
    
    
   }
   return sql;
  }
  #endregion

  #region 根据查询时间的条件,动态生成表名
  /// <summary>
  /// 根据查询时间的条件,动态生成表名
  /// </summary>
  /// <param name="tablehz">表后缀</param>
  /// <returns>tablename</returns>
  public  string table(DateTime time,string tablehz)
  {
   string table=null;
   //将输入的时间格式转换成固定的格式"yyyy-mm-dd"
   string stime=time.GetDateTimeFormats('D')[1].ToString();
   
   //取日期值的前六位,及年月值
   string szTime=stime.Substring(0,4)+stime.Substring(5,2);
   string nowTime=SiFenManager.SFObject.SF_DIC_DATE.GetCurrentMonth();
   //一,取当前表生成SQL语句
   if(SiFenManager.SFObject.SF_DIC_DATE.Exists(szTime))
   {
    if(szTime==nowTime)
    {
     table=tablehz;
    
    }
    else
    {
     table="M"+szTime+"_"+tablehz;
    
    
    }
   }
   else
   {
    return null;
   }
   return table;
  }
  #endregion

  #region 根据查询的条件,动态生成查询语句
  /// <summary>
  /// 根据查询的条件,动态生成查询语句
  /// </summary>
  /// <param name="zhiduan">查询字段</param>
  /// <param name="tiaojiao">查询条件</param>
  /// <param name="tablehz">表后缀</param>
  /// <returns>SQL语句</returns>
  public  string SQL(string zhiduan,string tiaojiao,string tablename)
  {
   string sql="select"+" "+zhiduan+" "+"from"+" "+tablename+" "+"where"+" "+tiaojiao+" ";
   return sql;
  }
  #endregion

  #endregion

  #region 存储过程操作  
  /// <summary>  
  /// 执行存储过程,返回OracleDataReader ( 注意:调用该方法后,一定要对OracleDataReader进行Close )  
  /// </summary>  
  /// <param name="storedProcName">存储过程名</param>  
  /// <param name="parameters">存储过程参数</param>  
  /// <returns>OracleDataReader</returns>  
  public  OracleDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)  
  {    
   OracleDataReader returnReader;  
   Open();//打开数据连接 
   OracleCommand command = BuildQueryCommand(con,storedProcName, parameters);  
   command.CommandType = CommandType.StoredProcedure;  
   returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);  
   return returnReader;  
  }  

  /// <summary>  
  /// 执行存储过程,无返回结果  
  /// </summary>  
  /// <param name="storedProcName">存储过程名</param>  
  /// <param name="parameters">存储过程参数</param>  
  /// <returns>OracleDataReader</returns>  
  public  void ExceuteProcedure(string storedProcName, IDataParameter[] parameters)  
  {
   Open();//打开数据连接 
   OracleCommand command = BuildQueryCommand(con,storedProcName, parameters);  
   command.CommandType = CommandType.StoredProcedure;  
   command.ExecuteNonQuery();  
   Close();
  }  

  /// <summary>  
  /// 执行存储过程,返回DataSet  
  /// </summary>  
  /// <param name="storedProcName">存储过程名</param>  
  /// <param name="parameters">存储过程参数</param>  
  /// <param name="tableName">DataSet结果中的表名</param>  
  /// <returns>DataSet</returns>  
  public  DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)  
  {  
    
   DataSet dataSet = new DataSet();  
   Open();//打开数据连接  
   OracleDataAdapter adapter = new OracleDataAdapter();  
   adapter.SelectCommand = BuildQueryCommand(con,storedProcName, parameters);  
   adapter.Fill(dataSet, tableName);  
   Close();//关闭数据库连接  
   return dataSet;  
   
  }  
  
  
  /// <summary>  
  /// 执行存储过程,返回影响的行数      
  /// </summary>  
  /// <param name="storedProcName">存储过程名</param>  
  /// <param name="parameters">存储过程参数</param>  
  /// <param name="rowsAffected">影响的行数</param>  
  /// <returns></returns>  
  public  int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)  
  {  
    
   int result;  
   Open();  
   OracleCommand command = BuildIntCommand(con, storedProcName, parameters);  
   rowsAffected = command.ExecuteNonQuery();  
   result = (int)command.Parameters["ReturnValue"].Value;  
   Close();
   return result;  
     
  }  
  
  #endregion  

  #region 私有成员
  private  void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, string cmdText, OracleParameter[] cmdParms)  
  {  
   if (conn.State != ConnectionState.Open)  
    conn.Open();  
   cmd.Connection = conn;  
   cmd.CommandText = cmdText;  
   if (trans != null)  
    cmd.Transaction = trans;  
   cmd.CommandType = CommandType.Text;//cmdType;  
   if (cmdParms != null)  
   {  
    foreach (OracleParameter parameter in cmdParms)  
    {  
     if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&  
      (parameter.Value == null))  
     {  
      parameter.Value = DBNull.Value;  
     }  
     cmd.Parameters.Add(parameter);  
    }  
   }  
  }
 
  /// <summary>  
  /// 构建 OracleCommand 对象(用来返回一个结果集,而不是一个整数值)  
  /// </summary>  
  /// <param name="connection">数据库连接</param>  
  /// <param name="storedProcName">存储过程名</param>  
  /// <param name="parameters">存储过程参数</param>  
  /// <returns>OracleCommand</returns>  
  private  OracleCommand BuildQueryCommand(OracleConnection connection,string storedProcName, IDataParameter[] parameters)  
  {  
   Open();//打开数据连接
   OracleCommand command = new OracleCommand(storedProcName, connection);  
   command.CommandType = CommandType.StoredProcedure;  
   foreach (OracleParameter parameter in parameters)  
   {  
    if (parameter != null)  
    {  
     // 检查未分配值的输出参数,将其分配以DBNull.Value.  
     if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&  
      (parameter.Value == null))  
     {  
      parameter.Value = DBNull.Value;  
     }  
     command.Parameters.Add(parameter);  
    }  
   }  
   return command;  
  } 
 
  /// <summary>  
  /// 创建 OracleCommand 对象实例(用来返回一个整数值)   
  /// </summary>  
  /// <param name="storedProcName">存储过程名</param>  
  /// <param name="parameters">存储过程参数</param>  
  /// <returns>OracleCommand 对象实例</returns>  
  private  OracleCommand BuildIntCommand(OracleConnection connection, string storedProcName, IDataParameter[] parameters)  
  {  
   OracleCommand command = BuildQueryCommand(connection, storedProcName, parameters);  
   command.Parameters.Add(new OracleParameter("ReturnValue",  
    OracleType.Int16, 4, ParameterDirection.ReturnValue,  
    false, 0, 0, string.Empty, DataRowVersion.Default, null));  
   return command;  
  } 

  #endregion
             
  #region 绑定下拉框
  /// <summary>
  /// 绑定下拉框
  /// </summary>
  /// <param name="Ddl">DDL列表框</param>
  /// <param name="Sql">绑定表格的Sql语句</param>
  /// <param name="TextField">显示值</param>
  /// <param name="ValueField">主键</param>
  public  void Bind(DropDownList Ddl,string Sql,string TextField,string ValueField)
  {
   Ddl.DataSource = GetDataSet(Sql);
   Ddl.DataTextField = TextField;
   Ddl.DataValueField = ValueField;
   Ddl.DataBind();
  }
  #endregion

  #region 绑定DataGrid
  /// <summary>
  /// 绑定DataGrid
  /// </summary>
  /// <param name="Ddl">DataGrid</param>
  /// <param name="Sql">绑定表格的Sql语句</param>
  public  void Bind(DataGrid dg,string Sql)
  {
   dg.DataSource = GetDataSet(Sql);
   dg.DataBind();
  }
  #endregion

  #region 修改数据集
  public static System.Data.DataSet PrepareDataSet(System.Data.DataSet Source)
  {
   int Need=12-Source.Tables[0].Rows.Count;
   for(int i=0;i<Need&&Need>=0;i++)
   {
    System.Data.DataRow temp=Source.Tables[0].NewRow();
    temp[0]="0";
    temp[1]=System.DateTime.Now;
    Source.Tables[0].Rows.Add(temp);
   }
   return Source;
  }
  #endregion
     
        #region 动态分配二维数组维数
  //调整长度
  public static Array Redim(Array origArray,params int[] lengths)
  {
   //确定每个元素的类型
   Type t=origArray.GetType().GetElementType();
   //创建新的数组
   Array newArray=Array.CreateInstance(t,lengths);
   //原数组中的数据拷贝到新数组中
   for ( int i = origArray.GetLowerBound(0); i <= Math.Min(origArray.GetUpperBound(0),newArray.GetUpperBound(0)); i++ )
    for ( int j = origArray.GetLowerBound(1); j <= Math.Min(origArray.GetUpperBound(1),newArray.GetUpperBound(1)); j++ )   
     newArray.SetValue( origArray.GetValue( i, j ) , i, j );
   //在这里没有用Copy方法,如果用此方法,会把原数组中所有数据逐个拷贝到新数组中                 
   return newArray;
  }
  #endregion

  #region 获得指定时间段内数据记录
  public  DataSet GetSJDSet(string stime ,string etime)
  {
   
   DataSet ds = new DataSet();
   
   string sql="Select MONTH From SF_DIC_DATE WHERE TO_NUMBER(MONTH)>="+stime
    +" AND TO_NUMBER(MONTH)<="+etime + "order by month asc";
   ds=GetDataSet(sql);
   return ds;

   
  }
  #endregion

  #region 获得指定时间段内数据记录
  public  DataSet GetTimeSet(string stime ,string etime)
  {
   
   DataSet ds = new DataSet();
   
   string sql="Select MONTH,flag From SF_DIC_DATE WHERE TO_NUMBER(MONTH)>="+stime
    +" AND TO_NUMBER(MONTH)<="+etime + "order by month asc";
   ds=GetDataSet(sql);
   return ds;

   
  }
  #endregion


  

 

  

 

 

 }
}