dir.by  
  Поиск  
Программирование, разработка, тестирование
PostgreSQL сервер (база данных) и pgAdmin (программа для работы с PostgreSQL сервер). Работает на разных платформах: Unix, Windows
Создаем C# консольное приложение для соединение с сервером PostgreSQL и пишем SQL запрос для получения данных. Данные получаем в виде json
  Посмотрели 8062 раз(а)    
 Создаем C# консольное приложение для соединение с сервером PostgreSQL и пишем SQL запрос для получения данных. Данные получаем в виде json 
последнее обновление: 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 тогда запускаем файл:
C:\Program Files\pgAdmin 4\v4\runtime\pgAdmin4.exe
Еще! Расширяем 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 ссылки может добавлять только залогиненный пользователь)

  Объявления  
  Объявления  
 
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  
Яндекс.Метрика