private void OnExecuteComplete(object sender, SqlExecuteCompleteEventArgs e) { if (this.InvokeRequired) { this.Invoke(new Action <object, SqlExecuteCompleteEventArgs>(DisplayResults), sender, e); } else { DisplayResults(sender, e); } _currentExecutionEngine = null; UpdateDatabaseContext(); }
private void DisplayResults(object sender, SqlExecuteCompleteEventArgs e) { _executionTimer.Enabled = false; ShowElapsedTime(); if (e.Exception == null) { DisplayNormalResults(sender, e); } else { DisplayExceptionResults(sender, e); } this.executeButton.Enabled = true; this.connectButton.Enabled = true; this.cancelQueryButton.Enabled = false; this.disconnectButton.Enabled = true; this.disconnectToolStripMenuItem.Enabled = true; }
private void DisplayNormalResults(object sender, SqlExecuteCompleteEventArgs e) { string sqlOutput = _currentExecutionEngine.Messages; TabPage pageToBeActivated = _messagesTab; mainTabControl.TabPages.Add(_messagesTab); bool hasError = false; foreach (OutputMessage message in _currentExecutionEngine.OutputMessages) { string text = message.Message + Environment.NewLine; _messagesTextBox.SelectionStart = _messagesTextBox.TextLength; _messagesTextBox.SelectionLength = 0; _messagesTextBox.SelectionColor = message.IsErrorText ? Color.Red : Color.Black; _messagesTextBox.AppendText(text); hasError ^= message.IsErrorText; } List <DataTable> resultTables = _currentExecutionEngine.ResultTables.ToList(); if (resultTables.Count > 0) { TabPage resultsTab = new TabPage(_tabTitleResults); pageToBeActivated = resultsTab; mainTabControl.TabPages.Add(resultsTab); StatusBar statusBar = new StatusBar(); int statusBarHeight = 20; Size gridSize = new Size(resultsTab.Width, (resultsTab.Height - statusBarHeight) / resultTables.Count); statusBar.Anchor = AnchorStyles.Left | AnchorStyles.Bottom | AnchorStyles.Right; statusBar.Size = new Size(resultsTab.Width, statusBarHeight); statusBar.Top = gridSize.Height * resultTables.Count; resultsTab.Controls.Add(statusBar); long rowCount = DisplayTablesOnTabPage(resultsTab, resultTables, gridSize); statusBar.Text = string.Format("{0} resultset(s); {1:#,##0} row(s) total", resultTables.Count, rowCount); resultsTab.Resize += ResultsTab_Resize; } if (_currentExecutionEngine.OptimizerInfoTable != null) { TabPage optimizerInfoTab = new TabPage("Optimizer"); mainTabControl.TabPages.Add(optimizerInfoTab); Size gridSize = new Size(optimizerInfoTab.Width, optimizerInfoTab.Height); DisplayTablesOnTabPage(optimizerInfoTab, new List <DataTable>() { _currentExecutionEngine.OptimizerInfoTable }, gridSize); } if (_currentExecutionEngine.TransformationStatsTable != null) { TabPage transformationStatsTab = new TabPage("Transformations"); mainTabControl.TabPages.Add(transformationStatsTab); Size gridSize = new Size(transformationStatsTab.Width, transformationStatsTab.Height); DisplayTablesOnTabPage(transformationStatsTab, new List <DataTable>() { _currentExecutionEngine.TransformationStatsTable }, gridSize); } List <SqlParseTree> trees = new List <SqlParseTree>(TreeTextParser.Parse(sqlOutput)); List <SqlMemo> memos = new List <SqlMemo>(MemoTextParser.Parse(sqlOutput)); foreach (SqlParseTree tree in trees) { TabPage tab = DrawTree(tree); mainTabControl.TabPages.Add(tab); } foreach (SqlMemo memo in memos) { TabPage tab = DrawMemo(memo); mainTabControl.TabPages.Add(tab); } mainTabControl.SelectedTab = pageToBeActivated; if (e.CancelledByUser) { executionStatus.Text = "Query was cancelled by user."; } else if (hasError) { executionStatus.Text = "Query completed with errors."; } else { executionStatus.Text = "Query executed successfully."; } }
private void DisplayExceptionResults(object sender, SqlExecuteCompleteEventArgs e) { DisplayException(e.Exception); }
private void ExecuteAllSql() { Exception exception = null; _isCancelled = false; try { List <string> sqlBatches = SplitSqlIntoBatches(_sql); _resultTables = new List <DataTable>(); _messages = new StringBuilder(); _outputMessages = new List <OutputMessage>(); InitializeTrackers(); using (Dal dal = new Dal(_connection)) { _dal = dal; try { foreach (string sql in sqlBatches) { _connection.InfoMessage += CaptureMessages; _connection.FireInfoMessageEventOnUserErrors = true; try { using (DataSet resultSet = dal.ExecuteQueryMultipleResultSets(sql)) { foreach (DataTable table in resultSet.Tables) { _resultTables.Add(table.Copy()); } } } finally { _connection.InfoMessage -= CaptureMessages; } if (_isCancelled) { break; } } } finally { _dal = null; } } FinalizeTrackers(); } catch (Exception ex) { exception = ex; } EventHandler <SqlExecuteCompleteEventArgs> executeCompleteHandler = this.ExecuteComplete; if (executeCompleteHandler != null) { SqlExecuteCompleteEventArgs args = new SqlExecuteCompleteEventArgs(); args.Exception = exception; args.CancelledByUser = _isCancelled; executeCompleteHandler(this, args); } }