Пример #1
0
        private void AddToHistory(SQLPart sql, ParameterStoreCollection parameters)
        {
            QueryStore q   = new QueryStore(sql.SQL, parameters);
            string     dir = System.IO.Path.GetDirectoryName(_historyPath);

            Directory.CreateDirectory(dir);
            using (StreamWriter wr = new StreamWriter(_historyPath, true, Encoding.UTF8))
            {
                q.WriteToStream(wr);
            }
        }
Пример #2
0
        public override SQLParts SplitSQL(string sql)
        {
            List <SQLPart> l    = new List <SQLPart>();
            TokenizedSQL   tsql = new TokenizedSQL(sql);
            int            i    = 0;
            int            n    = tsql.Tokens.Length;

            while (i < n)
            {
                //Token t = tsql.Tokens[i];
                for (; i < n; i++)
                {
                    Token t = tsql.Tokens[i];
                    if (t.Kind != TokenKind.Space && t.Kind != TokenKind.NewLine && t.Kind != TokenKind.Comment)
                    {
                        break;
                    }
                }
                int   i0           = i;
                Token t0           = tsql.Tokens[i0];
                bool  endByNewLine = false;
                if (t0.Kind == TokenKind.Identifier && (string.Compare(t0.Value, "begin") == 0 || string.Compare(t0.Value, "start") == 0))
                {
                    endByNewLine = true;
                }
                for (; i < n && tsql.Tokens[i].Kind != TokenKind.Semicolon && (!endByNewLine || tsql.Tokens[i].Kind != TokenKind.NewLine); i++)
                {
                    ;
                }
                string  s  = tsql.Extract(t0, tsql.Tokens[i - 1]);
                SQLPart sp = new SQLPart()
                {
                    Offset         = t0.Start.Index,
                    SQL            = s,
                    ParameterNames = GetParameterNames(s).ToArray(),
                };
                l.Add(sp);
                i++;
            }

            return(new SQLParts()
            {
                Items = l.ToArray(),
                ParameterNames = GetParameterNames(sql).ToArray()
            });
        }
Пример #3
0
        private void Add(SQLPart part, string clause)
        {
            switch (part)
              {
            case SQLPart.DECLARE:
              _queryParts[part] = Environment.NewLine + "DECLARE " + clause;
              break;

            case SQLPart.SET:
              _queryParts[part] = clause;
              break;

            case SQLPart.SELECT:
              _queryParts[part] = Environment.NewLine + "SELECT " + clause;
              break;

            case SQLPart.INTO:
              _queryParts[part] = Environment.NewLine + "INTO " + clause;
              break;

            case SQLPart.FROM:
              _queryParts[part] = Environment.NewLine + "FROM " + clause;
              break;

            case SQLPart.WHERE:
              _queryParts[part] = Environment.NewLine + "WHERE " + clause;
              break;

            case SQLPart.GROUPBY:
              _queryParts[part] = Environment.NewLine + "GROUP BY " + clause;
              break;

            case SQLPart.HAVING:
              _queryParts[part] = Environment.NewLine + "HAVING " + clause;
              break;

            case SQLPart.ORDERBY:
              _queryParts[part] = Environment.NewLine + "ORDER BY " + clause;
              break;

            case SQLPart.SEQUENCE:
              _queryParts[part] = Environment.NewLine + "CREATE SEQUENCE " + clause;
              break;

            case SQLPart.TRIGGER:
              _queryParts[part] = Environment.NewLine + "CREATE OR REPLACE TRIGGER " + clause;
              break;

            case SQLPart.DELETE:
              _queryParts[part] = Environment.NewLine + "DELETE TABLE " + clause;
              break;

            case SQLPart.CREATE:
              _queryParts[part] = Environment.NewLine + "CREATE TABLE " + _tableName + " (" + clause + ")";
              break;

            case SQLPart.UPDATE:
              _queryParts[part] = Environment.NewLine + "UPDATE TABLE " + clause;
              break;
              }
        }
Пример #4
0
        private void Add(SQLPart part, string clause)
        {
            switch (part)
            {
            case SQLPart.DECLARE:
                _queryParts[part] = Environment.NewLine + "DECLARE " + clause;
                break;

            case SQLPart.SET:
                _queryParts[part] = clause;
                break;

            case SQLPart.SELECT:
                _queryParts[part] = Environment.NewLine + "SELECT " + clause;
                break;

            case SQLPart.INTO:
                _queryParts[part] = Environment.NewLine + "INTO " + clause;
                break;

            case SQLPart.FROM:
                _queryParts[part] = Environment.NewLine + "FROM " + clause;
                break;

            case SQLPart.WHERE:
                _queryParts[part] = Environment.NewLine + "WHERE " + clause;
                break;

            case SQLPart.GROUPBY:
                _queryParts[part] = Environment.NewLine + "GROUP BY " + clause;
                break;

            case SQLPart.HAVING:
                _queryParts[part] = Environment.NewLine + "HAVING " + clause;
                break;

            case SQLPart.ORDERBY:
                _queryParts[part] = Environment.NewLine + "ORDER BY " + clause;
                break;

            case SQLPart.SEQUENCE:
                _queryParts[part] = Environment.NewLine + "CREATE SEQUENCE " + clause;
                break;

            case SQLPart.TRIGGER:
                _queryParts[part] = Environment.NewLine + "CREATE OR REPLACE TRIGGER " + clause;
                break;

            case SQLPart.DELETE:
                _queryParts[part] = Environment.NewLine + "DELETE TABLE " + clause;
                break;

            case SQLPart.CREATE:
                _queryParts[part] = Environment.NewLine + "CREATE TABLE " + _tableName + " (" + clause + ")";
                break;

            case SQLPart.UPDATE:
                _queryParts[part] = Environment.NewLine + "UPDATE TABLE " + clause;
                break;
            }
        }
Пример #5
0
        /// <summary>
        /// 处理字段内容
        /// </summary>
        /// <param name="blank"></param>
        /// <param name="field"></param>
        /// <param name="comments"></param>
        /// <returns></returns>
        private string GetFieldInfoSelect(string blank, string field, string comments, SQLPart sqlPart)
        {
            string rowInfo = string.Empty;

            if (sqlPart == SQLPart.Body)
            {
                if (!string.IsNullOrEmpty(comments))
                {
                    rowInfo = blank + field.ToLower() + ", --" + comments;
                }
                else
                {
                    rowInfo = blank + field.ToLower() + ", ";
                }
            }
            else if (sqlPart == SQLPart.Head)
            {
                if (!string.IsNullOrEmpty(comments))
                {
                    rowInfo = "select " + field.ToLower() + ", --" + comments;
                }
                else
                {
                    rowInfo = "select " + field.ToLower() + ", ";
                }
            }
            else
            {
                if (!string.IsNullOrEmpty(comments))
                {
                    rowInfo = blank + field.ToLower() + " --" + comments;
                }
                else
                {
                    rowInfo = blank + field.ToLower() + " ";
                }
            }

            return(rowInfo + "\n");
        }
Пример #6
0
 public static SQLPart create(SQLPartType type, string partValue)
 {
     SQLPart i = new SQLPart();
     i.value = partValue;
     i.partType = type;
     return i;
 }
Пример #7
0
        public void addPart(string addItem, SQLPartType addPartType)
        {
            SQLPart sp = this.sParts.Find(delegate(SQLPart opart)
            {
                return (opart.partType == addPartType);
            });
            if (sp == null)
            {
                sp = new SQLPart();
                sp.partType = addPartType;
                sParts.Add(sp);
            }
            if (sp.value == null || sp.value == "")
            {
                sp.value += SQLPartKeyword(addPartType).startkeyword;

            }
            else if (addPartType == SQLPartType.where)
            {
                if (sp.value != null && sp.value.Trim() != "" && sp.value.Trim().ToUpper() != "WHERE")
                {
                    sp.value += " and "; // +addItem;
                }
            }
            else if (addPartType == SQLPartType.fields)
            {
                sp.value += ", ";
            }
            if (addPartType == SQLPartType.where && !(String.IsNullOrEmpty(addItem)))
            {
                sp.value += "(" + addItem + ")";
            }
            else
            {
                sp.value += addItem;
            }
        }