Example #1
0
 private void FireEvent(ExecutionQueryEvent e)
 {
     if (this._Alive)
     {
         e.QueryParams = this.QueryParams;
         e.TAG         = this.QueryParams.Hash;
         OnStatementExecuted(this, e);
     }
 }
Example #2
0
 internal void OnStatementExecuted(object t, ExecutionQueryEvent e)
 {
     StatementExecuted?.Invoke(t, e);
     if (e.Status != Status.RUNNING && this.queryThread != null)
     {
         lock (this.queryThread)
         {
             this.queryThread.StatementExecuted -= OnStatementExecuted;
             this.queryThread = null;
         }
     }
 }
Example #3
0
        internal static DataTable HistoryDataTableBuilder(ExecutionQueryEvent e)
        {
            DataTable  data = new DataTable();
            DataColumn c0   = new DataColumn("Status");
            DataColumn c1   = new DataColumn("Query");
            DataColumn c2   = new DataColumn("Rows affected");
            DataColumn c3   = new DataColumn("Info");
            DataColumn c4   = new DataColumn("Secs/Millis");
            DataColumn c5   = new DataColumn("Executed At");

            c0.DataType = System.Type.GetType("System.Byte[]");
            data.Columns.Add(c0);
            data.Columns.Add(c1);
            data.Columns.Add(c2);
            data.Columns.Add(c3);
            data.Columns.Add(c4);
            data.Columns.Add(c5);
            DataRow row  = data.NewRow();
            string  info = "";

            if (e.Ex != null)
            {
                row["Status"] = IconHelper.status_error_arr;
            }
            else if (e.Status == Status.CANCELED)
            {
                row["Status"] = IconHelper.status_info_arr;
                info          = "Canceled";
            }
            else if (e.Status == Status.ABORTED)
            {
                row["Status"] = IconHelper.status_info_arr;
                info          = "Aborted";
            }
            else
            {
                row["Status"] = IconHelper.status_ok_arr;
            }
            string query = e.query != null ? e.query : e.QueryParams != null ? e.QueryParams.Sql : "";

            row["Query"]         = query;
            row["Rows affected"] = e.recordsAffected;
            row["Info"]          = e.Ex != null ? e.Ex.Message : info;
            row["Secs/Millis"]   = (int)e.duration.TotalSeconds + "/" + (int)e.duration.TotalMilliseconds;
            row["Executed At"]   = DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss");
            data.Rows.Add(row);
            return(data);
        }
Example #4
0
        internal void SetHistory(ExecutionQueryEvent e)
        {
            this.SuspendLayout();
            this.dataGridViewHistory.SuspendLayout();
            if (this.dataGridViewHistory.DataSource == null)
            {
                this.dataGridViewHistory.DataSource = new DataTable();
            }
            DataTable data            = ControlBuilder.HistoryDataTableBuilder(e);
            int       firstdisplayidx = this.dataGridViewHistory.FirstDisplayedScrollingRowIndex;

            ((DataTable)this.dataGridViewHistory.DataSource).Merge(data);
            if (firstdisplayidx > 1)
            {
                this.dataGridViewHistory.FirstDisplayedScrollingRowIndex = firstdisplayidx;
            }
            this.dataGridViewHistory.ResumeLayout();
            this.ResumeLayout();
        }
Example #5
0
        private void OnStatementExecuted(object sender, ExecutionQueryEvent e)
        {
            StatementExecuted?.Invoke(sender, e);
            if (e.Status == Status.HIDDEN)
            {
                return;
            }
            else if (e.Status == Status.ABORTED)
            {
                this.Invoke((MethodInvoker) delegate
                {
                    base.GetMainHome().AbandonAndOpenNewConnection();
                });
            }
            foreach (TabPageHolder dv in tabControl1.Controls)
            {
                if (dv.GetDataView().GetHashCode() == e.TAG)
                {
                    this.Invoke((MethodInvoker) delegate
                    {
                        if (e.Status == Status.FINISHED && e.QueryParams.Sql == null)
                        {
                            dv.GetDataView().SetData(e.data, e.query);
                        }
                        else if (e.Status == Status.FINISHED && e.QueryParams.Sql != null)
                        {
                            dv.GetDataView().AppendData(e.data);
                        }

                        if (e.QueryParams.Sql == null || e.Status == Status.ABORTED || e.Status == Status.CANCELED)
                        {
                            dv.GetDataView().SetHistory(e);
                        }
                    });
                    break;
                }
            }
        }
Example #6
0
        protected override void run()
        {
            _Alive = true;
            List <string>       statements  = base.Statements();
            ExecutionQueryEvent eventResult = null;

            for (int i = 0; i < statements.Count; i++)
            {
                bool is_last = statements.Count - 1 == i;
                CurrentQuery = statements[i];
                try
                {
                    if (!_Alive)
                    {
                        FireEvent(new ExecutionQueryEvent(Status.CANCELED));
                        break;
                    }
                    //Execute with adapter if is the last statement to fill the dataTable with data
                    Stopwatch stopWatch = new Stopwatch();
                    stopWatch.Start();
                    using (Command = new DbCommandFactory(Con(), statements[i]).Create())
                    {
                        if (!_Alive)
                        {
                            break;
                        }
                        using (reader = Command.ExecuteReader())
                        {
                            if (!_Alive)
                            {
                                break;
                            }
                            bool is_select  = Utils.IsShowDataTypeOfCommand(statements[i]);
                            var  resultData = new DataTable();
                            if (is_last)
                            {
                                using (DataSet ds = new DataSet()
                                {
                                    EnforceConstraints = false, CaseSensitive = false
                                })
                                {
                                    if (is_select && this.QueryParams.Offset > 0)
                                    {
                                        //skip, apply offset
                                        int count = 0;
                                        while (count++ != this.QueryParams.Offset && reader.Read())
                                        {
                                            ;
                                        }
                                    }
                                    ds.Tables.Add(resultData);
                                    if (is_select && this.QueryParams.Limit > 0)
                                    {
                                        var schema   = reader.GetSchemaTable();
                                        var listCols = new List <DataColumn>();
                                        if (schema != null)
                                        {
                                            foreach (DataRow row in schema.Rows)
                                            {
                                                listCols.Add(AddTableColumn(resultData, (Type)(row["DataType"]), System.Convert.ToString(row["ColumnName"])));
                                            }
                                        }
                                        int count = 0;
                                        while (count++ != this.QueryParams.Limit && reader.Read())
                                        {
                                            var row = resultData.NewRow();
                                            for (int x = 0; x < listCols.Count; x++)
                                            {
                                                row[((DataColumn)listCols[x])] = reader[x];
                                            }
                                            resultData.Rows.Add(row);
                                        }
                                    }
                                    else
                                    {
                                        resultData.Load(reader, LoadOption.OverwriteChanges);
                                    }
                                    ds.Tables.Remove(resultData);
                                }
                            }
                            stopWatch.Stop();
                            eventResult = new ExecutionQueryEvent(is_last ? Status.FINISHED : Status.RUNNING)
                            {
                                query = statements[i], duration = stopWatch.Elapsed, recordsAffected = reader.RecordsAffected, data = resultData
                            };
                            Command?.Cancel();
                        }
                    }
                    FireEvent(eventResult);
                }
                catch (DbException ex)
                {
                    if (this.ContinueExecutingNextOnFail)
                    {
                        ///log
#if DEBUG
                        Console.WriteLine(ex.Message);
#endif
                        //status change in future depending on user selection continue or not after error
                        FireEvent(new ExecutionQueryEvent(is_last ? Status.FINISHED : Status.RUNNING)
                        {
                            Ex = ex, query = statements[i]
                        });
                    }
                    else
                    {
                        FireEvent(new ExecutionQueryEvent(Status.ERROR)
                        {
                            Ex = ex, query = statements[i]
                        });
                    }
                }
                catch (IndexOutOfRangeException ex)
                {
                    if (this.ContinueExecutingNextOnFail)
                    {
                        //better format/handle the sql errors/exceptions
#if DEBUG
                        Console.WriteLine(ex.Message);
#endif
                        FireEvent(new ExecutionQueryEvent(is_last ? Status.FINISHED : Status.RUNNING)
                        {
                            Ex = ex, query = statements[i]
                        });
                    }
                    else
                    {
                        FireEvent(new ExecutionQueryEvent(Status.ERROR)
                        {
                            Ex = ex, query = statements[i]
                        });
                    }
                }
                catch (Exception ex)
                {
                    if (this.ContinueExecutingNextOnFail)
                    {
#if DEBUG
                        Console.WriteLine(ex.Message);
#endif
                        FireEvent(new ExecutionQueryEvent(is_last ? Status.FINISHED : Status.RUNNING)
                        {
                            Ex = ex, query = statements[i]
                        });
                    }
                    else
                    {
                        FireEvent(new ExecutionQueryEvent(Status.ERROR)
                        {
                            Ex = ex, query = statements[i]
                        });
                    }
                }
            }
        }
Example #7
0
 protected virtual void OnStatementExecuted(object t, ExecutionQueryEvent e)
 {
     StatementExecuted?.Invoke(t, e);
 }