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