dir.by  
  Поиск  
Компьютер, программы
PostgreSQL сервер (база данных) и pgAdmin (программа для работы с PostgreSQL сервер). Работает на разных платформах: Unix, Windows
 Создаем C# консольное приложение для соединение с сервером PostgreSQL и пишем SQL запрос для получения данных. Данные получаем в виде json 
посмотрели 9050 раз
обновлено: 22 сентября 2021
Шаг 1. Создаем C# приложение
Шаг 2. Добавим nuget package "npgsql"
Шаг 3. Добавим nuget package "Newtonsoft.json" для конвертации текста в формате json в C# класс
Шаг 4. Добавим код для соединения с сервером PostgreSQL и SQL запрос для получения данных
  C#     Добавим код в файл Program.cs
using Newtonsoft.Json;
using Npgsql;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
     static class UtilsPostgres
     {
          public static NpgsqlConnection Connect(string connectionString)
          {
               NpgsqlConnection conn = new NpgsqlConnection(connectionString);
               try
               {
                    conn.Open();
               }
               catch (Exception e)
               {
                    throw new Exception("Error connecting to the database", e);
               }
               return conn;
          }

          public static async Task ExecuteSelectAsJson(NpgsqlConnection conn, string sql, Action<string> callback)
          {
               try
               {
                    using (var command = conn.CreateCommand())
                    {
                         command.CommandText = sql;
                         var result = await command.ExecuteScalarAsync();
                         if (result is string json)
                         {
                              callback(json);
                         }
                    }
               }
               catch (Exception e)
               {
               }
          }
     }

     public class City
     {
          public int CityId { get; set; }
          public string CityName { get; set; }
     }

     class Program
     {
          static async Task Main(string[] args)
          {
               // connect
               string connectionString = "Server=localhost; Port=5432; Database=postgres; UserId=postgres; Password=evgen12345; commandTimeout=120;";
               var conn = UtilsPostgres.Connect(connectionString);

               // getting data
               string sql = $@"
                                   SELECT json_agg(row_to_json(cities))
                                   FROM
                                   (
                                        SELECT
                                             id AS CityId,
                                             name AS CityName
                                        FROM city
                                   ) AS cities;
                              "
;
               await UtilsPostgres.ExecuteSelectAsJson(conn, sql, json => {

                    // show json
                    Console.WriteLine(json);

                    // convert json to list
                    var cities = JsonConvert.DeserializeObject<List<City>>(json);

                    // show list
                    foreach (var item in cities)
                    {
                         Console.WriteLine($"{item.CityId} {item.CityName}");
                    }

               });

               Console.ReadLine();
          }
     }
}
Запустим программу и увидим результат
На заметку! Параметры для соединения с сервером PostgreSQL
string connectionString = "Server=localhost; Port=5432; Database=postgres; UserId=postgres; Password=evgen12345; commandTimeout=120;";
Параметры берутся вот здесь:

Открываем pgAdmin
Если иконки pgAdmin нет на рабочем столе в Windows тогда создадим:
 
Открывается pgAdmin
 
Вводим пароль который создали при установке PostgreSQL сервера (база данных) ...
 
Откроется pgAdmin и мы увидим сервер:
Еще! Расширяем sql чтобы в json брать данные из таблицы "person" и связанной таблицы "city"
  C#     Добавим код в файл Program.cs
using Newtonsoft.Json;
using Npgsql;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
     static class UtilsPostgres
     {
          public static NpgsqlConnection Connect(string connectionString)
          {
               NpgsqlConnection conn = new NpgsqlConnection(connectionString);
               try
               {
                    conn.Open();
               }
               catch (Exception e)
               {
                    throw new Exception("Error connecting to the database", e);
               }
               return conn;
          }

          public static async Task ExecuteSelectAsJson(NpgsqlConnection conn, string sql, Action<string> callback)
          {
               try
               {
                    using (var command = conn.CreateCommand())
                    {
                         command.CommandText = sql;
                         var result = await command.ExecuteScalarAsync();
                         if (result is string json)
                         {
                              callback(json);
                         }
                    }
               }
               catch (Exception e)
               {
               }
          }
     }

     public class Person
     {
          public int PersonId { get; set; }
          public string FirstName { get; set; }
          public string LastName { get; set; }
     }


     public class City
     {
          public int CityId { get; set; }
          public string CityName { get; set; }
          public List<Person> Persons { get; set; }
     }

     class Program
     {
          static async Task Main(string[] args)
          {
               // connect
               string connectionString = "Server=localhost; Port=5432; Database=postgres; UserId=postgres; Password=evgen12345; commandTimeout=120;";
               var conn = UtilsPostgres.Connect(connectionString);

               // getting data
               string sql = $@"
                                   SELECT json_agg(row_to_json(aaa))
                                   FROM
                                   (
                                        SELECT
                                             id AS CityId,
                                             name AS CityName,
                                             (
                                                  SELECT json_agg(row_to_json(bbb))
                                                  FROM
                                                  (
                                                       SELECT
                                                            id AS PersonId,
                                                            first_name AS FirstName,
                                                            last_name AS LastName
                                                       FROM person
                                                       WHERE person.city_id=city.id
                                                  ) AS bbb
                                             ) AS Persons

                                        FROM city
                                   ) AS aaa;
                              "
;
               await UtilsPostgres.ExecuteSelectAsJson(conn, sql, json => {

                    // show json
                    Console.WriteLine(json);

                    // convert jsobn to list
                    var cities = JsonConvert.DeserializeObject<List<City>>(json);

                    // show list
                    foreach (var item in cities)
                    {
                         Console.WriteLine($"{item.CityId} {item.CityName}");
                    }

               });

               Console.ReadLine();
          }
     }
}
 
← Предыдущая тема
Создаем C# консольное приложение для соединение с сервером PostgreSQL и пишем SQL запрос для получения данных
 
Следующая тема →
Добавляем auto increment когда колонка уже создана(PostgreSQL запросы)
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

Экскурсии по Москве Экскурсии по Москве: пешеходные, автобусные и речные прогулки на любой вкус
Анонс! Ярмарка вакансий для молодежи, работа (учащихся, которые хотели бы подработать в свободное время, а также выпускники)|||Минск, Витебск, Гомель, Гродно, Могилев, Борисов, Полоцк, Брест, Барановичи, Пинск с 13 по 17 апреля 2026
  Объявления  
  Объявления  
 
PostgreSQL сервер
Что такое база данных PostgreSQL сервер?
Скачиваем и устанавливаем PostgreSQL сервер (база данных) на Windows
Программа pgAdmin для работы с PostgreSQL сервер (работаем в Windows)
Скачиваем и устанавливаем pgAdmin (программа для работы с PostgreSQL) | Windows
Открываем pgAdmin и конектимся к удаленному серверу PostgreSQL
Открываем pgAdmin и пишем SQL запрос для выборки данных из сервера PostgreSQL
Создаем таблицы
Создаем таблицу "city" (используем pgAdmin, сервер PostgreSQL)
Создаем таблицу "person" и связываем с таблицей "city" (используем pgAdmin, сервер PostgreSQL)
Добавляем данные в таблицы
Добавляем данные в таблицу "city" (используем pgAdmin, сервер PostgreSQL)
Добавляем данные в таблицу "person" (используем pgAdmin, сервер PostgreSQL)
C# приложение для для получения данных
Создаем C# консольное приложение для соединение с сервером PostgreSQL и пишем SQL запрос для получения данных
Создаем C# консольное приложение для соединение с сервером PostgreSQL и пишем SQL запрос для получения данных. Данные получаем в виде json
PostgreSQL запросы
Добавляем auto increment когда колонка уже создана(PostgreSQL запросы)
Меняем тип колонки с boolean в bit(1) | PostgreSQL запросы
Меняем тип колонки с bit(1) в boolean | PostgreSQL запросы

  Ваши вопросы присылайте по почте: info@dir.by  
Яндекс.Метрика