Ejemplo n.º 1
0
        public string GetSqlText(string text, int currentCaretPosition)
        {
            var sqlTerminatorsArray = SqlTerminators.ToArray();
            var end = StringHelper.IndexOfNextNonQualifiedCharacter(text, currentCaretPosition,
                                                                    sqlTerminatorsArray, "'", "\"");

            var start = StringHelper.IndexOfPreviousNonQualifiedCharacter(text, currentCaretPosition,
                                                                          sqlTerminatorsArray, "'", "\"");


            var query = text.Substring(start, end - start);

            return(query.Trim());
        }
Ejemplo n.º 2
0
        public IList <string> SplitSqlStatements(string text)
        {
            var list = new List <string>();

            if (text == null)
            {
                throw new ArgumentNullException("text");
            }
            if (string.IsNullOrWhiteSpace(text) || text.Length == 0)
            {
                return(list);
            }

            text = _databaseServer.InlineCommentRegex.Replace(text, string.Empty);
            text = _databaseServer.BlockCommentRegex.Replace(text, string.Empty);

            var    sqlTerminators    = SqlTerminators.ToArray();
            var    literalQualifiers = LiteralQualifiers.ToArray();
            string sql = null;
            int    start = 0, end = text.Length;

            while (start >= 0 && start < text.Length && end != -1)
            {
                end = StringHelper.IndexOfNextNonQualifiedCharacter(text, start, sqlTerminators, literalQualifiers);
                if (end != -1)
                {
                    sql = text.Substring(start, end - start).Trim();
                    sql = _trimStartRegex.Replace(sql, string.Empty);
                    sql = _trimEndRegex.Replace(sql, string.Empty);
                    if (sql.Length > 0)
                    {
                        list.Add(sql);
                    }
                    start = end + 1;
                }
            }

            if (start >= 0 && start < text.Length)
            {
                end = text.Length;
                sql = _trimStartRegex.Replace(text.Substring(start, end - start).Trim(), string.Empty);
                sql = _trimEndRegex.Replace(sql, string.Empty);
                if (sql.Length > 0)
                {
                    list.Add(sql);
                }
            }
            return(list);
        }
Ejemplo n.º 3
0
        public int GetQueryStartPosition(TextArea textArea, int currentCaretPosition)
        {
            string selectedText = textArea.SelectionManager.SelectedText.Trim();

            if (!string.IsNullOrEmpty(selectedText))
            {
                var startLocation = textArea.SelectionManager.SelectionCollection[0].StartPosition;
                int startPosition = textArea.Document.PositionToOffset(startLocation);
                return(startPosition);
            }

            var start = StringHelper.IndexOfPreviousNonQualifiedCharacter(textArea.Document.TextContent,
                                                                          currentCaretPosition,
                                                                          SqlTerminators.ToArray(), "'", "\"");

            return(start);
        }