private void tabControl1_Selected(object sender, TabControlEventArgs e) { // Move the input focus to the query builder. // This will fire Leave event in the text box and update the query builder // with modified query text. queryBuilder1.Focus(); Application.DoEvents(); // Try to execute the query using current database connection if (e.TabPage == tabPageData) { dataGridView1.DataSource = null; if (queryBuilder1.MetadataProvider != null && queryBuilder1.MetadataProvider.Connected) { DB2Command command = (DB2Command)queryBuilder1.MetadataProvider.Connection.CreateCommand(); command.CommandText = queryBuilder1.SQL; // handle the query parameters if (queryBuilder1.Parameters.Count > 0) { for (int i = 0; i < queryBuilder1.Parameters.Count; i++) { if (!command.Parameters.Contains(queryBuilder1.Parameters[i].FullName)) { DB2Parameter parameter = new DB2Parameter(); parameter.ParameterName = queryBuilder1.Parameters[i].FullName; parameter.DbType = queryBuilder1.Parameters[i].DataType; command.Parameters.Add(parameter); } } using (QueryParametersForm qpf = new QueryParametersForm(command)) { qpf.ShowDialog(); } } DB2DataAdapter adapter = new DB2DataAdapter(command); DataSet dataset = new DataSet(); try { adapter.Fill(dataset, "QueryResult"); dataGridView1.DataSource = dataset.Tables["QueryResult"]; } catch (Exception ex) { MessageBox.Show(ex.Message, "SQL query error"); } } } }
private static DbCommand CreateSqlCommand(string sqlCommand, SQLQuery sqlQuery) { DbCommand command = (DbCommand)sqlQuery.SQLContext.MetadataProvider.Connection.CreateCommand(); command.CommandText = sqlCommand; // handle the query parameters if (sqlQuery.QueryParameters.Count <= 0) { return(command); } foreach (Parameter p in sqlQuery.QueryParameters.Where(item => !command.Parameters.Contains(item.FullName))) { var parameter = command.CreateParameter(); parameter.ParameterName = p.FullName; parameter.DbType = p.DataType; command.Parameters.Add(parameter); } var qpf = new QueryParametersForm(command); qpf.ShowDialog(); return(command); }
private void UpdateResultsGrid() { // Check database connection if (queryBuilder.MetadataProvider == null || queryBuilder.MetadataProvider.Connection == null) { Label label = new Label(); label.Text = "You should connect a database"; label.TextAlign = ContentAlignment.MiddleCenter; label.Dock = DockStyle.Fill; dataGridView1.Controls.Add(label); } else if (queryBuilder.SQL.Length == 0) // check the query text is not empty { Label label = new Label(); label.Text = "No query to execute"; label.TextAlign = ContentAlignment.MiddleCenter; label.Dock = DockStyle.Fill; dataGridView1.Controls.Add(label); } else { dataGridView1.Controls.Clear(); } var queryToExecute = ""; // Limit query results to 10 rows for preview purposes //queryBuilder.SQLContext.LoadingOptions.OfflineMode = true; //queryBuilder.SQLContext.SyntaxProvider = queryBuilder.SyntaxProvider; //queryBuilder.SQLContext.MetadataProvider = queryBuilder.MetadataProvider; //var query = new SQLQuery(sqlContext) {SQL = queryToExecute}; //tempQueryBuilder.SQL = queryToExecute; using (QueryTransformer queryTransformer = new QueryTransformer()) { queryTransformer.Query = queryBuilder.QueryView.Query; queryTransformer.ResultCount = "10"; // select top 10 rows only queryToExecute = queryTransformer.SQL; } // Try to execute the query using current database connection: if (tabControl1.SelectedTab == tabPageResultsPreview) { dataGridView1.DataSource = null; if (queryBuilder.MetadataProvider != null && queryBuilder.MetadataProvider.Connected) { if (queryBuilder.MetadataProvider is MSSQLMetadataProvider) { SqlCommand command = (SqlCommand)queryBuilder.MetadataProvider.Connection.CreateCommand(); command.CommandText = queryToExecute; // handle the query parameters if (queryBuilder.Parameters.Count > 0) { for (int i = 0; i < queryBuilder.Parameters.Count; i++) { if (!command.Parameters.Contains(queryBuilder.Parameters[i].FullName)) { SqlParameter parameter = new SqlParameter(); parameter.ParameterName = queryBuilder.Parameters[i].FullName; parameter.DbType = queryBuilder.Parameters[i].DataType; command.Parameters.Add(parameter); } } using (QueryParametersForm qpf = new QueryParametersForm(command)) { qpf.ShowDialog(); } } SqlDataAdapter adapter = new SqlDataAdapter(command); DataSet dataset = new DataSet(); try { adapter.Fill(dataset, "QueryResult"); dataGridView1.DataSource = dataset.Tables["QueryResult"]; } catch (Exception ex) { MessageBox.Show(ex.Message, "SQL query error"); } } else if (queryBuilder.MetadataProvider is OLEDBMetadataProvider) { OleDbCommand command = (OleDbCommand)queryBuilder.MetadataProvider.Connection.CreateCommand(); command.CommandText = queryToExecute; // handle the query parameters if (queryBuilder.Parameters.Count > 0) { for (int i = 0; i < queryBuilder.Parameters.Count; i++) { if (!command.Parameters.Contains(queryBuilder.Parameters[i].FullName)) { OleDbParameter parameter = new OleDbParameter(); parameter.ParameterName = queryBuilder.Parameters[i].FullName; parameter.DbType = queryBuilder.Parameters[i].DataType; command.Parameters.Add(parameter); } } using (QueryParametersForm qpf = new QueryParametersForm(command)) { qpf.ShowDialog(); } } OleDbDataAdapter adapter = new OleDbDataAdapter(command); DataSet dataset = new DataSet(); try { adapter.Fill(dataset, "QueryResult"); dataGridView1.DataSource = dataset.Tables["QueryResult"]; } catch (Exception ex) { MessageBox.Show(ex.Message, "SQL query error"); } } else if (queryBuilder.MetadataProvider is ODBCMetadataProvider) { OdbcCommand command = (OdbcCommand)queryBuilder.MetadataProvider.Connection.CreateCommand(); command.CommandText = queryToExecute; // handle the query parameters if (queryBuilder.Parameters.Count > 0) { for (int i = 0; i < queryBuilder.Parameters.Count; i++) { if (!command.Parameters.Contains(queryBuilder.Parameters[i].FullName)) { OdbcParameter parameter = new OdbcParameter(); parameter.ParameterName = queryBuilder.Parameters[i].FullName; parameter.DbType = queryBuilder.Parameters[i].DataType; command.Parameters.Add(parameter); } } using (QueryParametersForm qpf = new QueryParametersForm(command)) { qpf.ShowDialog(); } } OdbcDataAdapter adapter = new OdbcDataAdapter(command); DataSet dataset = new DataSet(); try { adapter.Fill(dataset, "QueryResult"); dataGridView1.DataSource = dataset.Tables["QueryResult"]; } catch (Exception ex) { MessageBox.Show(ex.Message, "SQL query error"); } } // enable sorting foreach (DataGridViewColumn column in dataGridView1.Columns) { column.SortMode = DataGridViewColumnSortMode.Automatic; } } } }