Esempio n. 1
0
        private void rows_select_select_button_Click(object sender, EventArgs e)
        {
            if (rows_select_selectedColumns_listBox.Items.Count == 0 || string.IsNullOrWhiteSpace(dash_tables_listBox.SelectedItem?.ToString()))
            {
                HandleError("You must select a table columns.");
                return;
            }

            if (rows_select_where_checkBox.Checked)
            {
                if (string.IsNullOrWhiteSpace(rows_select_whereColumn_comboBox.SelectedItem?.ToString()) || string.IsNullOrWhiteSpace(rows_select_whereOperator_comboBox.SelectedItem?.ToString()) || string.IsNullOrWhiteSpace(rows_select_whereValue_textBox.Text))
                {
                    HandleError("All 'where' forms must have value.");
                    return;
                }
            }

            var dto = new FormSelectDto()
            {
                TableName = $"{dash_statusStrip_schema_value.Text}.{dash_tables_listBox.SelectedItem?.ToString()}",
                Columns   = new List <ColumnDto>()
            };

            foreach (var col in rows_select_selectedColumns_listBox.Items)
            {
                dto.Columns.Add(new ColumnDto()
                {
                    ColumnName = col.ToString().Split('(')[0].Trim(),
                    Value      = col.ToString().Split('(')[1].TrimEnd(')')
                });
            }

            if (rows_select_where_checkBox.Checked)
            {
                dto.Where       = true;
                dto.WhereColumn = new ColumnDto()
                {
                    ColumnName = rows_select_whereColumn_comboBox.SelectedItem?.ToString().Split('(')[0].Trim(),
                    Value      = rows_select_whereColumn_comboBox.SelectedItem?.ToString().Split('(')[1].TrimEnd(')')
                };
                dto.WhereOperator = rows_select_whereOperator_comboBox.SelectedItem?.ToString();
                dto.WhereValue    = rows_select_whereValue_textBox.Text;
            }

            try
            {
                var rows = _sql.GetRows(dto, connDto);

                WriteToLog($"Successfully retrieved {rows.Count} rows");
                WriteToLog("Opening data grid");

                while (rows_select_selectedColumns_listBox.Items.Count > 0)
                {
                    rows_select_availableColumns_listBox.Items.Add(rows_select_selectedColumns_listBox.Items[0]);
                    rows_select_selectedColumns_listBox.Items.RemoveAt(0);
                }

                rows_select_where_checkBox.Checked               = false;
                rows_select_whereColumn_comboBox.SelectedIndex   = -1;
                rows_select_whereOperator_comboBox.SelectedIndex = -1;
                rows_select_whereValue_textBox.Text              = string.Empty;

                var data = new DataViewerDto()
                {
                    Columns = new List <string>(),
                    Values  = new List <List <string> >()
                };

                var uniqueColumns = rows.Select(x => x.ColumnName).Distinct();

                data.Columns.AddRange(uniqueColumns);

                var listToAdd = new List <string>();
                for (int i = 0; i < rows.Count; i++)
                {
                    listToAdd.Add(rows[i].Value);
                    if (i + 1 == uniqueColumns.Count() || (i + 1) % uniqueColumns.Count() == 0)
                    {
                        data.Values.Add(listToAdd);
                        listToAdd = new List <string>();
                    }
                }

                var dataGrid = new DataViewer(data);
                dataGrid.Show();
            }
            catch (Exception ex)
            {
                HandleError("Error getting rows:", ex);
                return;
            }
        }
Esempio n. 2
0
        public List <ColumnDto> GetRows(FormSelectDto dto, ConnectionDto connDto)
        {
            try
            {
                using var con = new NpgsqlConnection(ConnectionString(connDto));
                con.Open();

                using var cmd  = new NpgsqlCommand();
                cmd.Connection = con;

                cmd.CommandText = "SELECT";

                foreach (var col in dto.Columns)
                {
                    cmd.CommandText += $" {col.ColumnName},";
                }

                cmd.CommandText = cmd.CommandText.TrimEnd(',');

                cmd.CommandText += $" FROM {dto.TableName}";

                if (dto.Where)
                {
                    cmd.CommandText += $" WHERE {dto.WhereColumn.ColumnName} {dto.WhereOperator}";

                    if (RequiresQuotes(dto.WhereColumn.Value))
                    {
                        cmd.CommandText += $" '{dto.WhereValue}'";
                    }
                    else
                    {
                        cmd.CommandText += $" {dto.WhereValue}";
                    }
                }

                cmd.CommandText += ";";

                using NpgsqlDataReader rdr = cmd.ExecuteReader();

                var columns = new List <ColumnDto>();

                while (rdr.Read())
                {
                    for (int i = 0; i < dto.Columns.Count; i++)
                    {
                        columns.Add(new ColumnDto()
                        {
                            ColumnName = dto.Columns[i].ColumnName,
                            Value      = rdr.GetValue(i).ToString()
                        });
                    }
                }
                con.Close();

                return(columns);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }