static void Main(string[] args) { int c = Environment.TickCount; if (args.Length == 0) { Console.WriteLine("{0} scriptfile", "syntaxcheck"); return; } TGSqlParser sqlparser = new TGSqlParser(TDbVendor.DbVMssql); sqlparser.Sqlfilename = args[0]; int iRet = sqlparser.Parse(); if (iRet == 0) { foreach (TCustomSqlStatement stmt in sqlparser.SqlStatements) { printStmt(stmt); } } else { Console.WriteLine("Syntax error found in input sql:"); Console.WriteLine(sqlparser.ErrorMessages); } }
private List <string> GetColumnAlia(string exp) { //string exp = "select itemname as textcol_1,ordercycle as longcol_1, name myname from itemdata where itemno= p_form0000000083_m.userdefine_1"; List <string> list = new List <string>(); TGSqlParser sqlparser = new TGSqlParser(TDbVendor.DbVMssql); sqlparser.SqlText.Text = exp; int ret = sqlparser.Parse(); if (ret == 0) { TSelectSqlStatement sqlstmt; sqlstmt = (TSelectSqlStatement)sqlparser.SqlStatements[0]; //sqlstmt.Fields foreach (TLzField field in sqlstmt.Fields) { //Console.WriteLine("field alia: " + field.FieldAlias); if (string.IsNullOrEmpty(field.FieldAlias)) { list.Add(field.Name); } else { list.Add(field.FieldAlias); } } } return(list); }
static void Main(string[] args) { TGSqlParser sqlparser = new TGSqlParser(TDbVendor.DbVMssql); sqlparser.SqlText.Text = "SELECT * FROM Customers c, Addresses a WHERE c.CustomerName='foo'"; sqlparser.OnTableToken += new TOnTableTokenEvent(OnTableToken); int result = sqlparser.Parse(); Console.ReadLine(); }
public static ParseResult ExtractColumns(string sqlStr) { TGSqlParser sqlparser = new TGSqlParser(TDbVendor.DbVOracle); sqlparser.SqlText.Text = sqlStr; int ret = sqlparser.Parse(); if (ret != 0) { throw new Exception("Unable to parse sql."); } tablelist = new List <string>(); columnlist = new List <string>(); databaselist = new List <string>(); schemalist = new List <string>(); functionlist = new List <string>(); triggerlist = new List <string>(); sequencelist = new List <string>(); tcList = new StringBuilder(); for (int i = 0; i < sqlparser.SqlStatements.Count(); i++) { TCustomSqlStatement sql = sqlparser.SqlStatements[i]; AnalyzeStmt(sql, 0); } SortAndRemoveDup(tablelist); SortAndRemoveDup(columnlist); SortAndRemoveDup(databaselist); SortAndRemoveDup(schemalist); SortAndRemoveDup(functionlist); SortAndRemoveDup(triggerlist); SortAndRemoveDup(sequencelist); ParseResult result = new ParseResult() { Columnlist = columnlist, Databaselist = databaselist, Functionlist = functionlist, Schemalist = schemalist, Sequencelist = schemalist, Tablelist = tablelist, Triggerlist = triggerlist, Structure = tcList.ToString() }; return(result); }
private void Initial(string exp) { //string exp = "select itemname as textcol_1,ordercycle as longcol_1 from itemdata where itemno= p_form0000000083_m.userdefine_1;10;p_form0000000083_d"; string[] s = exp.Split(';'); string sql = s[0]; string action = s[1]; string tableName = s[2]; this.Sql = sql; //处理sql语句 TGSqlParser sqlparser = new TGSqlParser(TDbVendor.DbVMssql); sqlparser.SqlText.Text = sql; int i = sqlparser.Parse(); if (i == 0) { WhereCondition w = new WhereCondition(sqlparser.SqlStatements[0].WhereClause); this.Right = w.getControlIds(); } //处理action switch (action) { case "00": this.ActionType = Rule.Expression.ActionType.Override; break; case "01": this.ActionType = Rule.Expression.ActionType.Append; break; case "11": this.ActionType = Rule.Expression.ActionType.SelectAppend; break; case "10": this.ActionType = Rule.Expression.ActionType.SelectOverride; break; default: this.ActionType = Rule.Expression.ActionType.Append; break; } //处理表名 this.TableName = tableName; //帮助的字段 this.HelpFields = GetColumnAlia(sql); }
public override bool Parse(string sql, out List <StatementObj> statements) { statements = new List <StatementObj>(); try { TGSqlParser sqlparser = new TGSqlParser(TDbVendor.DbVMysql); sqlparser.SqlText.Text = sql; int ret = sqlparser.Parse(); if (ret != 0) { this.message = sqlparser.ErrorMessages; return(false); } foreach (var statement in sqlparser.SqlStatements) { StatementObj obj = new StatementObj(); obj.SqlText = statement.RawSqlText; switch (statement.SqlStatementType) { case TSqlStatementType.sstSelect: case TSqlStatementType.sstMySQLDescribe: case TSqlStatementType.sstMySQLShow: obj.SqlType = SqlType.eTable; break; default: obj.SqlType = SqlType.eMsg; break; } statements.Add(obj); } return(true); } catch (Exception ex) { this.message = ex.Message; LogHelper.Error(ex); return(false); } }
private void Initial(string exp) { //string exp = "p_form0000000083_m.textcol_1 = (select itemname from itemdata where itemno= p_form0000000083_m.userdefine_1 )"; int index = exp.IndexOf('='); string left = exp.Substring(0, index); string right = exp.Substring(index + 1); this.Left.Add(left); //List<string> ls = null; TGSqlParser sqlparser = new TGSqlParser(TDbVendor.DbVMssql); sqlparser.SqlText.Text = right; int i = sqlparser.Parse(); if (i == 0) { WhereCondition w = new WhereCondition(sqlparser.SqlStatements[0].WhereClause); //ls = w.getControlIds(); this.Right = w.getControlIds(); } }
public string ValidarIndice(string pConsulta, string pUser) { TGSqlParser sqlparser = new TGSqlParser(TDbVendor.DbVMssql); string xmlData = string.Empty; string vId = string.Empty; string vResultado = string.Empty; int vContador = 0; int vValorAnterior = 0; Tablas vCampo; List <Tablas> vCampos = new List <Tablas>(); try { sqlparser.SqlText.Text = pConsulta; Console.ReadLine(); int result = sqlparser.Parse(); xmlData = sqlparser.XmlText; System.IO.StringReader xmlSR = new System.IO.StringReader(xmlData); dsDatos.ReadXml(xmlSR); foreach (DataRow vRow in dsDatos.Tables["attr"].Select("expression_Id>=0")) { if (vContador != 0) { if (vValorAnterior != Convert.ToInt32(vRow["expression_Id"].ToString())) { vId = vId + vRow["attr_Id"].ToString() + ","; if (vContador == 1) { vId = vId + vRow["attr_Id"].ToString() + ","; } } } else if (dsDatos.Tables["attr"].Select("expression_Id>=0").Length == 1) { vId = vId + vRow["attr_Id"].ToString() + ","; } vValorAnterior = Convert.ToInt32(vRow["expression_Id"].ToString()); vContador++; } vContador = 0; vId = vId.TrimEnd(Convert.ToChar(",")); foreach (string vItem in vId.Split(Convert.ToChar(","))) { vCampo = new Tablas(); foreach (DataRow vRow in dsDatos.Tables["sourcetoken"].Select("attr_Id = " + vItem)) { if (vRow["dbobjtype"].ToString() == "field" || vRow["dbobjtype"].ToString() == "table alias") { if (vRow["dbobjtype"].ToString() == "field") { vCampo.NombreCampo = vRow["sourcetoken_Text"].ToString(); } else { vCampo.AliasTabla = vRow["sourcetoken_Text"].ToString(); } } } vCampos.Add(vCampo); } ExtraerTablas(); vResultado = ConsultarIndex(vCampos, pUser); } catch (Exception ex) { //throw new Exception(ex.Message); error = ex.Message; } return(vResultado); }