public DataControls(int Command,//对应命令,0是Select,1是Insert,2是Update,3是Delete 
         string Table,//表名 
         string[] Where,//Where Search Criteria 
         SqlConnection objConn//服务器连接 
         ) 
      { 
         // TODO: 在此处添加构造函数逻辑 
         iCommand=Command; 
         strTable=Table; 
         strWhere=Where; 
         Conn=objConn; 
      }       private string BuildCommand() 
      { 
         string strCommand; 
         if(iCommand>3||strTable==null) 
            return null; 
         if(strTable.Trim()=="") 
            return null;          switch(iCommand) 
         { 
            case 0: 
            { 
               strCommand="SELECT Column FROM Table WHERE Search Criteria GROUP BY Team HAVING Search Criteria ORDER BY SortCondition"; 
               int iIndex=strCommand.IndexOf("Column"); 
               strCommand=strCommand.Remove(iIndex,6); 
               int iPlace=1; 
               foreach(string strCol in strColumn) 
               { 
                  strCommand=strCommand.Insert(iIndex,strCol); 
                  iIndex+=strCol.Length; 
                  if(strColumn.Length>iPlace) 
                  { 
                     strCommand=strCommand.Insert(iIndex,","); 
                     iIndex++; 
                  } 
                  iPlace++; 
               } 
               strCommand=strCommand.Replace("Table",strTable);                iIndex=strCommand.IndexOf("WHERE Search Criteria"); 
               strCommand=strCommand.Remove(iIndex,21); 
               if(strWhere!=null) 
               { 
                  strCommand=strCommand.Insert(iIndex,"WHERE "); 
                  iIndex+=6; 
                  iPlace=1; 
                  foreach(string strWhe in strWhere) 
                  { 
                     strCommand=strCommand.Insert(iIndex,strWhe); 
                     iIndex+=strWhe.Length; 
                     if(strWhere.Length>iPlace) 
                     { 
                        strCommand=strCommand.Insert(iIndex," AND "); 
                        iIndex+=5; 
                     } 
                     iPlace++; 
                  } 
               } 
               iIndex=strCommand.IndexOf("GROUP BY Team"); 
               strCommand=strCommand.Remove(iIndex,13); 
               if(strGroupBy!=null) 
               { 
                  strCommand=strCommand.Insert(iIndex,"GROUP BY "); 
                  iIndex+=9; 
                  iPlace=1; 
                  foreach(string strGrBy in strGroupBy) 
                  { 
                     strCommand=strCommand.Insert(iIndex,strGrBy); 
                     iIndex+=strGrBy.Length; 
                     if(strGroupBy.Length>iPlace) 
                     { 
                        strCommand=strCommand.Insert(iIndex,","); 
                        iIndex++; 
                     } 
                     iPlace++; 
                  } 
               } 
                
               iIndex=strCommand.IndexOf("HAVING Search Criteria"); 
               strCommand=strCommand.Remove(iIndex,22); 
               if(strHaving!=null) 
               { 
                  strCommand=strCommand.Insert(iIndex,"HAVING "); 
                  iIndex+=7; 
                  iPlace=1; 
                  foreach(string strHav in strHaving) 
                  { 
                     strCommand=strCommand.Insert(iIndex,strHav); 
                     iIndex+=strHav.Length; 
                     if(strHaving.Length>iPlace) 
                     { 
                        strCommand=strCommand.Insert(iIndex," AND "); 
                        iIndex+=5; 
                     } 
                     iPlace++; 
                  } 
               }

解决方案 »

  1.   

    iIndex=strCommand.IndexOf("ORDER BY SortCondition"); 
                   strCommand=strCommand.Remove(iIndex,22); 
                   if(strOrderBy!=null) 
                   { 
                      strCommand=strCommand.Insert(iIndex,"ORDER BY "); 
                      iIndex+=9; 
                      iPlace=1; 
                      foreach(string strOrBy in strOrderBy) 
                      { 
                         strCommand=strCommand.Insert(iIndex,strOrBy); 
                         iIndex+=strOrBy.Length; 
                         if(strOrderBy.Length>iPlace) 
                         { 
                            strCommand=strCommand.Insert(iIndex,","); 
                            iIndex++; 
                         } 
                         iPlace++; 
                      } 
                   } 
                   return strCommand;             } 
                case 1: 
                { 
                   if(strColumn.Length!=strValues.Length) 
                      return null;                strCommand="INSERT INTO Table (Column) VALUES(Value)"; 
                   strCommand=strCommand.Replace("Table",strTable);                int iIndex=strCommand.IndexOf("Column"); 
                   strCommand=strCommand.Remove(iIndex,6); 
                   int iPlace=1; 
                   foreach(string strCol in strColumn) 
                   { 
                      strCommand=strCommand.Insert(iIndex,strCol); 
                      iIndex+=strCol.Length; 
                      if(strColumn.Length>iPlace) 
                      { 
                         strCommand=strCommand.Insert(iIndex,","); 
                         iIndex++; 
                      } 
                      iPlace++; 
                   } 
                   iIndex=strCommand.IndexOf("Value"); 
                   strCommand=strCommand.Remove(iIndex,5); 
                   iPlace=1; 
                   foreach(string strValue in strValues) 
                   { 
                      strCommand=strCommand.Insert(iIndex,"'"+strValue+"'"); 
                      iIndex+=strValue.Length+2; 
                      if(strValues.Length>iPlace) 
                      { 
                         strCommand=strCommand.Insert(iIndex,","); 
                         iIndex++; 
                      } 
                      iPlace++; 
                   }                return strCommand; 
                } 
                case 2: 
                { 
                   if(strColumn.Length!=strValues.Length) 
                      return null;                strCommand="UPDATE Table SET Column=Value WHERE Search Criteria"; 
                   strCommand=strCommand.Replace("Table",strTable); 
                   int iIndex=strCommand.IndexOf("Column=Value"); 
                   strCommand=strCommand.Remove(iIndex,12); 
                   int iPlace=1; 
                   foreach(string strCol in strColumn) 
                   { 
                      string strValue=strValues[iPlace-1]; 
                      strCommand=strCommand.Insert(iIndex,strCol+"='"+strValue+"'"); 
                      iIndex+=strCol.Length+strValue.Length+3; 
                      if(strColumn.Length>iPlace) 
                      { 
                         strCommand=strCommand.Insert(iIndex,","); 
                         iIndex++; 
                      } 
                      iPlace++; 
                   } 
                   iIndex=strCommand.IndexOf("Search Criteria"); 
                   strCommand=strCommand.Remove(iIndex,15); 
                   iPlace=1; 
                   foreach(string strWhe in strWhere) 
                   { 
                      strCommand=strCommand.Insert(iIndex,strWhe); 
                      iIndex+=strWhe.Length; 
                      if(strWhere.Length>iPlace) 
                      { 
                         strCommand=strCommand.Insert(iIndex," AND "); 
                         iIndex+=5; 
                      } 
                      iPlace++; 
                   }                return strCommand; 
                }
      

  2.   

    case 3: 
                {                strCommand="DELETE FROM Table WHERE Search Criteria"; 
                   strCommand=strCommand.Replace("Table",strTable);                int iIndex=strCommand.IndexOf("Search Criteria"); 
                   strCommand=strCommand.Remove(iIndex,15); 
                   int iPlace=1; 
                   foreach(string strWhe in strWhere) 
                   { 
                      strCommand=strCommand.Insert(iIndex,strWhe); 
                      iIndex+=strWhe.Length; 
                      if(strWhere.Length>iPlace) 
                      { 
                         strCommand=strCommand.Insert(iIndex," AND "); 
                         iIndex+=5; 
                      } 
                      iPlace++; 
                   } 
                   return strCommand; 
                } 
             } 
             return null; 
          } 
          public ICollection SelectCommand() 
          { 
             try 
             { 
                DataTable dt=new DataTable(); 
                DataView dv; 
                string strCommand=BuildCommand(); 
                if(iCommand==0) 
                { 
                   SqlDataAdapter objDA=new SqlDataAdapter(strCommand,Conn); 
                   objDA.Fill(dt); 
                   dv=new DataView(dt); 
                } 
                else 
                { 
                   return null; 
                } 
              
                return dv; 
             } 
             catch 
             { 
                return null; 
             } 
          } 
           
          public bool InsertCommand() 
          { 
             if(iCommand==1) 
             { 
                try 
                { 
                   SqlCommand objCmd=new SqlCommand(BuildCommand(),Conn); 
                   objCmd.Connection.Open(); 
                   objCmd.ExecuteNonQuery(); 
                   objCmd.Connection.Close(); 
                } 
                catch 
                { 
                   return false; 
                } 
                return true; 
             } 
             return false; 
          }       public bool UpdateCommand() 
          { 
             if(iCommand==2) 
             { 
                try 
                { 
                   SqlCommand objCmd=new SqlCommand(BuildCommand(),Conn); 
                   objCmd.Connection.Open(); 
                   objCmd.ExecuteNonQuery(); 
                   objCmd.Connection.Close(); 
                } 
                catch 
                { 
                   return false; 
                } 
                return true; 
             } 
             return false; 
          }       public bool DeleteCommand() 
          { 
             if(iCommand==3) 
             { 
                try 
                { 
                   SqlCommand objCmd=new SqlCommand(BuildCommand(),Conn); 
                   objCmd.Connection.Open(); 
                   objCmd.ExecuteNonQuery(); 
                   objCmd.Connection.Close(); 
                } 
                catch 
                { 
                   return false; 
                } 
                return true; 
             } 
             return false; 
          } 
           
          public string[] Column 
          { 
             get 
             { 
                return strColumn; 
             } 
             set 
             { 
                strColumn=value; 
             } 
          }       public string[] Values 
          { 
             get 
             { 
                return strValues; 
             } 
             set 
             { 
                strValues=value; 
             } 
          }       public string[] Where 
          { 
             get 
             { 
                return strWhere; 
             } 
             set 
             { 
                strWhere=value; 
             } 
          } 
          public string[] GroupBy 
          { 
             get 
             { 
                return strGroupBy; 
             } 
             set 
             { 
                strGroupBy=value; 
             } 
          } 
          public string[] Having 
          { 
             get 
             { 
                return strHaving; 
             } 
             set 
             { 
                strHaving=value; 
             } 
          } 
          public string[]   OrderBy 
          { 
             get 
             { 
                return strOrderBy; 
             } 
             set 
             { 
                strOrderBy=value; 
             } 
          } 
          public int Command 
          { 
             get 
             { 
                return iCommand; 
             } 
             set 
             { 
                iCommand=value; 
             } 
          } 
          public string Table 
          { 
             get 
             { 
                return strTable; 
             } 
             set 
             { 
                strTable=value; 
             } 
          } 
          public SqlConnection SqlConn 
          { 
             get 
             { 
                return Conn; 
             } 
             set 
             { 
                Conn=value; 
             } 
          } 
       } 
    }
      

  3.   

    U can use Interface and abstract Class to implement reuse codes ,
      

  4.   

    谢谢....
    我是使用.NETFRAME WORK V1.1的~``