示例#1
0
        private int LetTableInfo(ref List <AnalyzeResultSqlStruct> retSql, List <AnalyzeReslut> aResult, int SelectIndex, int FromIndex)
        {
            AnalyzeResultSqlStruct sqlStu = new AnalyzeResultSqlStruct();
            int endIndex = FromIndex;

            for (int k = FromIndex + 1; k < aResult.Count; k++)
            {
                if (aResult[k].Item.Name == "标识符" && string.IsNullOrEmpty(sqlStu.TableName))
                {
                    sqlStu.TableName = aResult[k].Block;
                }
                else if (aResult[k].Item.Name == "关键字")
                {
                    if (aResult[k].Block.ToLower() == "where")
                    {
                        for (int i = k + 1; i < aResult.Count; i++)
                        {
                            if ((aResult[i].Item.Name == "关键字") && aResult[i].Block.ToLower() != "and" && aResult[i].Block != "group")
                            {
                                endIndex = i - 1;
                                break;
                            }
                            else
                            {
                                sqlStu.TableWhere += aResult[i].Block;
                            }
                        }
                    }
                    else
                    {
                        endIndex = FromIndex + 1;
                    }
                }
                if (endIndex > FromIndex)
                {
                    break;
                }
            }
            string strCol = "";

            for (int i = SelectIndex + 1; i <= FromIndex; i++)
            {
                if (i == FromIndex)
                {
                    sqlStu.TableColumns.Add(strCol);
                    break;
                }
                if (aResult[i].Item.Name == "标点符号" && aResult[i].Block == ",")
                {
                    sqlStu.TableColumns.Add(strCol);
                    strCol = "";
                }
                else
                {
                    strCol += aResult[i].Block;
                }
            }
            retSql.Add(sqlStu);
            return(endIndex);
        }
示例#2
0
        private int LetTableInfo(ref List <AnalyzeResultSqlStruct> retSql, List <AnalyzeReslut> aResult, int SelectIndex, int FromIndex)
        {
            AnalyzeResultSqlStruct sqlStu = new AnalyzeResultSqlStruct();
            int endIndex = FromIndex;

            for (int k = FromIndex + 1; k < aResult.Count; k++)
            {
                if (aResult[k].Item.Name == "标识符" && string.IsNullOrEmpty(sqlStu.TableName))
                {
                    sqlStu.TableName = aResult[k].Block;
                }
                else if (aResult[k].Item.Name == "关键字")
                {
                    if (aResult[k].Block.ToLower() == "where")
                    {
                        for (int i = k + 1; i < aResult.Count; i++)
                        {
                            if ((aResult[i].Item.Name == "关键字") && aResult[i].Block.ToLower() != "and" && aResult[i].Block != "group")
                            {
                                endIndex = i - 1;
                                break;
                            }
                            else
                            {
                                sqlStu.TableWhere += aResult[i].Block;
                            }
                        }
                    }
                    else
                    {
                        endIndex = FromIndex + 1;
                    }
                }

                if (endIndex > FromIndex)
                {
                    break;
                }
            }

            /*/
             * string strCol = "";
             * for (int i = SelectIndex + 1; i <= FromIndex; i++)
             * {
             *  if (i == FromIndex)
             *  {
             *      sqlStu.TableColumns.Add(strCol);
             *      break;
             *  }
             *  if (aResult[i].Item.Name == "标点符号" && aResult[i].Block == ",")
             *  {
             *      strCol = strCol.Trim();
             *      sqlStu.TableColumns.Add(strCol);
             *      strCol = "";
             *  }
             *  else
             *  {
             *      strCol += aResult[i].Block;
             *  }
             * }/*/

            GetResult(aResult, sqlStu.TableColumns, SelectIndex, FromIndex);

            int groupstart = FindIndex(aResult, "group");

            if (groupstart > 0)//存在group
            {
                int groupend  = aResult.Count;
                int groupend1 = FindIndex(aResult, "order");
                if (groupend1 > 0)
                {
                    groupend = groupend1;
                }
                else
                {
                    groupend1 = FindIndex(aResult, "compute");
                    if (groupend1 > 0)
                    {
                        groupend = groupend1;
                    }
                }
                GetGroupByResult(aResult, sqlStu.GroupByColumns, groupstart, groupend);
            }
            retSql.Add(sqlStu);
            return(endIndex);
        }