示例#1
0
        public ReaderContext ExecuteReaderToDataGridView(ConnectionData connData, string sqlQuery)
        {
            if (FlagColumns)
            {
                /*Создаём название колонки для таблицы*/

                DataGridViewTextBoxColumn column1 = new DataGridViewTextBoxColumn();
                column1.Name         = "server";
                column1.HeaderText   = "Сервер";
                column1.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

                DataGridViewTextBoxColumn column2 = new DataGridViewTextBoxColumn();
                column2.Name       = "countStrings";
                column2.HeaderText = "Количество строк";
                column2.Width      = 200;

                dgvResults.Columns.AddRange(column1, column2);

                FlagColumns = false;
            }
            NpgsqlConnection connection    = null;
            NpgsqlDataReader reader        = null;
            ReaderContext    ridearContext = new ReaderContext(reader, connData);

            try
            {
                connection = new NpgsqlConnection(connData.ConnectionString);
                connection.Open();

                if (connection.State == ConnectionState.Open)
                {
                    NpgsqlCommand command = new NpgsqlCommand(sqlQuery, connection);
                    reader = command.ExecuteReader();

                    if (reader.HasRows) // Если в результатах запроса есть строки
                    {
                        ridearContext.Reader = reader;
                        //Формируем строку
                        int countRows = 0;
                        while (reader.Read())
                        {
                            countRows++;
                        }
                        //Закрываем соединение
                        connection.Close();

                        //Создаём информационную строку
                        DataGridViewRow rowInfo = new DataGridViewRow();
                        rowInfo.DefaultCellStyle.BackColor = Color.Aqua;
                        //Создаём информационные ячейки о сервере
                        DataGridViewCell cellInfo1 = new DataGridViewTextBoxCell();
                        //cellInfo.
                        cellInfo1.Value = connData.ServerName;

                        //Создаём информационные ячейки о сервере
                        DataGridViewCell cellInfo2 = new DataGridViewTextBoxCell();
                        //cellInfo.
                        cellInfo2.Value = countRows;
                        //Добавляем ячейку в строку
                        rowInfo.Cells.AddRange(cellInfo1, cellInfo2);

                        //Добавляем строку в таблицу
                        dgvResults.Rows.Add(rowInfo);
                        return(ridearContext);
                    }
                    return(ridearContext);
                }
                return(ridearContext);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(ridearContext);
            }
            finally
            {
                if (connection != null)
                {
                    //выполнено отключение
                    connection.Close();
                }
            }
        }
示例#2
0
        private void btnRun_Click(object sender, EventArgs e)
        {
            if (rtbQuery.Text == "")
            {
                MessageBox.Show("Вы не ввели запрос!");
            }
            else if (dgvServers.Rows.Count < 1)
            {
                MessageBox.Show("Вы не добавили ни одного сервера!");
            }
            else
            {
                //Показываем и Устанавливаем статусбар в нулевое значение
                pbExequteQuery.Visible = true;
                pbExequteQuery.Value   = 0;

                //Отображает сообщение
                lbMessage.Visible = false;
                lbMessage.Text    = "";

                //Считаем количество выделенных серверов
                int countSelServers = 0;
                //Счётчик опрошенных серверов
                int countServers = 1;
                foreach (DataGridViewRow row in dgvServers.Rows)
                {
                    //Если сервер отмечен галочкой
                    if (row.Cells[0].Value.ToString() == "True")
                    {
                        countSelServers++;
                    }
                }

                FlagColumns = true;
                dgvResults.Columns.Clear();
                dgvResults.Rows.Clear();

                foreach (DataGridViewRow row in dgvServers.Rows)
                {
                    //Получаем запрос из формы
                    string sqlQuery = rtbQuery.Text;


                    //Если сервер отмечен галочкой
                    if (row.Cells[0].Value.ToString() == "True")
                    {
                        string servName = row.Cells[2].Value.ToString(); //Название сервера
                        string adressIP = row.Cells[3].Value.ToString(); //Адрес IP
                        string port     = row.Cells[4].Value.ToString(); //Порт
                        string database = row.Cells[5].Value.ToString(); //База данных
                        string user     = row.Cells[6].Value.ToString(); //Пользователь
                        string timeout  = row.Cells[7].Value.ToString(); //Таймаут
                        string passw    = row.Cells[8].Value.ToString(); //Пароль

                        //Создаём объект соединения
                        ConnectionData cd = new ConnectionData(servName, adressIP, port, database, user, passw, timeout);

                        //Выводим результат выполнения запроса в форму
                        ReaderContext rc = ExecuteReaderToDataGridView(cd, sqlQuery);
                        ListReaderContext.Add(rc);

                        //Устанавливаем прогресс статусбара
                        pbExequteQuery.Value += 100 / countSelServers;
                        lbMessage.Visible     = true;
                        lbMessage.Text        = String.Format("Выполнен запрос на {0} сервере из {1}", countServers, countSelServers);
                        countServers++;
                    }
                }
            }
        }