Exemple #1
0
        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();
        }
Exemple #4
0
        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);
        }
Exemple #6
0
        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);
            }
        }
Exemple #7
0
        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();
            }
        }
Exemple #8
0
        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);
        }