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); }
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); }