Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 06.01.2022
Сообщений: 7

Нужен совет по созданию апликейшена (CURD) редактирующий базу данных (Postgresql)

06.01.2022, 16:40. Показов 2887. Ответов 19

Студворк — интернет-сервис помощи студентам
Добрый день,

У меня тут проблема одна, нужно выполнить задачу и срок увы короткий, на тему в которой я не очень силен (работа с базой данных).

Логика проекта такая:

Создать базу данных и table со столбцами (номер, имя, дата, пол, место для фалага где может быть значение 0 или 1) в Postgresql.

Затем, используя С# создать апликейшен, который приконектится к этой базе данных и отобразит таблицу с такими же столбцами (а так же будет изменять и сам table в Postgresql). Далее необходимо в этой таблице добавить возможность (4 кнопками), 1 - добавить новую строку, 2 - редактировать любую строку в самой таблицы и сохранить результат, 3- изменить флаг в последнем столбце с 0 на 1 чтобы скрыть строку (строки с единицой не должны отображаться, но не удаляться), 4 - отобразить таблицу с результатом после изменений.

Я нашел много туториалов и успешно прошел как сделать эту задачу используя отдельные text box, где можно вписывать или редактировать данные для строки. К сожалению такой вариант не годится, нужно чтобы изменение были в одной таблице где она и отображается (но можно как альтернатива вместо второй кнопки добавить в каждую строку кнопку эдит и редактировать только строку). Увы туториалов близких к моей задачи всего несколько и не совсем то. Буду очень благодарен, если сможете помочь со способом как возможно это сделать в одной таблице.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2022, 16:40
Ответы с готовыми решениями:

Нужен совет по созданию своего типа данных
Приветствую всех. Мне необходимо создать свой тип данных "Пароль". Размер самого пароля всегда один и тот же и составляет 6 байт. Кроме...

Ребята, мне нужен совет подключить готовую базу данных на сайт
Ребята, нужна помощь. Есть сайт и есть готовая база данных. Мне нужно подключить ее к сайту. Но я не имел до этого дела с подключением базы...

Нужен совет.Как реализовать базу клиентов компании и синхронизацию данных программно
Всем хорошего дня. Не знаю в какой раздел писать, пишу сюда. Если что, перекиньте тему. Нужен совет в том, как,и с помощью чего...

19
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,625
Записей в блоге: 3
06.01.2022, 16:48
Цитата Сообщение от Bjhm Посмотреть сообщение
CURD
CRUD!
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
06.01.2022, 17:16
Цитата Сообщение от wizard41 Посмотреть сообщение
CRUD!
Это оно затевается всегда как CRUD, а по факту, да еще если и с использованием всяких ORM, очень быстро превращается в самый натуральный CURD.
2
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,625
Записей в блоге: 3
06.01.2022, 20:15
Цитата Сообщение от kolorotur Посмотреть сообщение
в самый натуральный CURD
эт точно )

Добавлено через 2 часа 31 минуту
Цитата Сообщение от Bjhm Посмотреть сообщение
У меня тут проблема одна
Задание то понятно, а вот проблема то в чем конкретно? Или все это задание - одна большая проблема?
Цитата Сообщение от Bjhm Посмотреть сообщение
Затем, используя С# создать апликейшен
Все что описано в этом абзаце - решается банальными SQL-запросами к БД, которые ваше приложение должно формировать.
Цитата Сообщение от Bjhm Посмотреть сообщение
Увы туториалов близких к моей задачи всего несколько и не совсем то.
Ну это вы зря. Туториалов с лихвой хватает для всего. Нужно лишь умение (желание) искать и правильно дифференцировать и интерполировать найденные сведения, применительно к своей задаче.
Цитата Сообщение от Bjhm Посмотреть сообщение
К сожалению такой вариант не годится, нужно чтобы изменение были в одной таблице
Полагаю, с такими вещами как проектирование/работа с формами и элементами - у вас полный швах?
Цитата Сообщение от Bjhm Посмотреть сообщение
и срок увы короткий
Цитата Сообщение от Bjhm Посмотреть сообщение
на тему в которой я не очень силен
Это стандартная ситуация почти у всех вопрошающих. Как вам такое задание вообще досталось?

P.S.
Задача очень сильно напоминает тестовое задание на позицию в стеке Java, C#, MSSQL, PostgreSQL на стажера/джуна в одну из мелко-средних IT-компашек. Если это так, то спешу вас разочаровать: на первом же тех. собеседовании по вашему решению задачи вас обязательно спросят по сути решения. Типа, а почему вот тут сделали так-то, а вот тут так-то? Очень быстро станет ясно, что делали не вы, да и вообще мало что понимаете в написанном. И все.
0
0 / 0 / 0
Регистрация: 06.01.2022
Сообщений: 7
07.01.2022, 04:45  [ТС]
Спасибо за ответ. Проблема, что с лихвой тутлриалы, что я осилил вводят данные или редактируют путем отдельной формы, хотелось бы понять как изменить и вместо формы сделать в самой таблице отображение и изменения путем кнопок (а так же как изменить дэлит на флаг и скрывать строки в столбце которых этот флаг был отмечен).

Задание не для собеседования, я занимался вообще другим проектом на Питоне, мне резко дали тестовое на датабазу (но устно опрашивать сто процентов не будет, нужно просто сделать проект). По туториалу, что я делал я понял логику работы, но как изменить формат в нужный догадаться не могу и как изменить функцию удаление на скрывание. Я делал на веб форме. Туториалов увы с нужным форматом не нашел, кроме нескольких где формат все равно отличается.

Увы нужно делать все на С# в котором как вы заметили я очень так себе.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,625
Записей в блоге: 3
07.01.2022, 13:08
Bjhm,
ну хотя бы главное окно с датагридом и строкой подключения к БД уже готово у вас?
Скрытие строк из результата выборки можно сделать примерно так:
SQL
1
SELECT * FROM [TableName] WHERE [Visible] = FALSE;
,
где столбец Visible в БД является bool-столбцом. Установить туда значение true/false можно из формы с помощью кнопки, например:
SQL
1
UPDATE [TableName] SET [Visible] = TRUE WHERE [Id] = [текущий индекс выбранной строки в гриде];
, после этого снова обновляем выборку и отмеченные строки уже не появятся в результате.
Другое дело, как потом включить отображение скрытых столбцов из формы; мы то их не видим! Но это детали...
Вся ваша таблица будет отображаться в одном гриде, в нем же редактироваться. Способов редактирования и записи изменений в БД - миллион! Тут уже что понравится.
Цитата Сообщение от Bjhm Посмотреть сообщение
Увы нужно делать все на С# в котором как вы заметили я очень так себе.
Т.е. общий посыл вашей темы каков? Сделайте мне за меня?
Я вот, например, с PostgreSQL не работал ни разу. Понятно что sql везде плюс/минус одинаков, но в этой БД есть какие-то свои нюансы...
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
07.01.2022, 15:16
CRUD в общем случае имеет две реализации: редактирование в гриде и модальными формами. Что нужно Вам ?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,625
Записей в блоге: 3
07.01.2022, 17:31
Цитата Сообщение от MsGuns Посмотреть сообщение
Что нужно Вам ?
Судя по тексту топика ТСу нужен только грид. Для модальных окон у меня пример готовый есть, правда на Access, но не стал предлагать ТСу.
Bjhm,
Поставил я себе postgresql 14.1, смотрю эта БД весьма популярна в разработках. Видимо, рано или поздно можно с ней столкнуться, внезапно.
По сути вашей задачи сделал пока следующее (при помощи тузлы pgAdmin):
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
--Создадим таблицу
CREATE TABLE users
(
    Id serial,
    NUMBER SMALLINT NOT NULL,
    Name CHARACTER VARYING(20) NOT NULL,
    DATE DATE,
    Gender CHARACTER VARYING(6) NOT NULL,
    Visible BOOLEAN NOT NULL DEFAULT FALSE,
    PRIMARY KEY(Id)
);
 
--Добавим пользователей
INSERT INTO users (NUMBER, name, gender) VALUES (100, 'Bob', 'Male');
INSERT INTO users (NUMBER, name, gender) VALUES (101, 'Peter', 'Male');
INSERT INTO users (NUMBER, name, gender) VALUES (102, 'Alice', 'Female');
INSERT INTO users (NUMBER, name, gender) VALUES (103, 'Eva', 'Female');
 
--Посмотрим что получилось
SELECT * FROM users;

Для подключения к БД из VS нужно пакетик нугет Npgsql скачивать. Сейчас времени нет, попробую позже.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
07.01.2022, 17:35
Цитата Сообщение от wizard41 Посмотреть сообщение
эта БД весьма популярна в разработках
Очень хороший сервер. Похож на ORACLE, но не такой тяжелый
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,625
Записей в блоге: 3
07.01.2022, 17:44
Цитата Сообщение от MsGuns Посмотреть сообщение
Похож на ORACLE, но не такой тяжелый
pgAdmin сразу зашел ). Удобный.

Добавлено через 7 минут
MsGuns, у нее из коробки SQL Shell идет, может быть из VS удобнее через ком-строку управлять?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,625
Записей в блоге: 3
07.01.2022, 19:38
Лучший ответ Сообщение было отмечено Bjhm как решение

Решение

Bjhm, немного продвинулся:
Сейчас Npgsql установлен, все подключается, при запуске приложения происходит выборка всей таблицы users в грид:

Проект прикладываю, отталкивайтесь от него.
Естественно, измените строку подключения на свои параметры (логин, пароль, база).
C#
1
static readonly string connstr = "Host=localhost;Username=postgres;Password=postgres;Database=Test";
Добавьте нужные кнопки, измените свойства грида на необходимые (правка, выделение и т.п.).
Для связи данных с гридом я использую BindingList и соответственно модель данных в виде класса DataGridModel : INotifyPropertyChanged. DataTable не люблю.
Вопросы задавайте по ходу вашего продвижения в теме...
Вложения
Тип файла: rar PostgreSQL.rar (10.80 Мб, 7 просмотров)
1
0 / 0 / 0
Регистрация: 06.01.2022
Сообщений: 7
08.01.2022, 12:13  [ТС]
Большое спасибо, извиняюсь, что долго не отвечал, до этапа кнопок я тоже продвинулся, но все равно большое спасибо за референс, я как раз накосячил с последнем столбцом, чек боксы имееют больше смысла нежели ввод цифр (путем выбора дроп окна) и путем ифа скрывать строки (что как я уже осознал была у меня глупой идеей). Сейчас на этапе кнопки балк редактирования пытаюсь, что-то сделать (редактировать всю таблицу и сохранить). Буду держать в курсе прогресса.
0
0 / 0 / 0
Регистрация: 06.01.2022
Сообщений: 7
08.01.2022, 20:10  [ТС]
Пока есть такой код для добавление строки (1ая кнопка) и кнопка сейв (5ая) сохраняет изменение в датабазу, но еще как 2ую кнопку балк коррект (режим корректа всей таблицы при нажатие кнопки эдит и сохранение изменений в датабазу кнопкой сейв) не понял лучше сделать, буду благодарен совету.
Миниатюры
Нужен совет по созданию апликейшена (CURD) редактирующий базу данных (Postgresql)   Нужен совет по созданию апликейшена (CURD) редактирующий базу данных (Postgresql)  
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,625
Записей в блоге: 3
08.01.2022, 22:27
Bjhm, принято код выкладывать на форум в тегах в текстовом виде. Так проще ориентироваться что в нем.
Цитата Сообщение от Bjhm Посмотреть сообщение
балк коррект
балк - это... ?
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
08.01.2022, 22:34
Цитата Сообщение от wizard41 Посмотреть сообщение
балк - это... ?
Есть предположение, что под этим словом (bulk) ТС подразумевает сохранение изменений кучей для всех записей датасета за раз.
Конечно, это ни в коем разе не bulk, но ТС, очевидно, думает иначе
0
0 / 0 / 0
Регистрация: 06.01.2022
Сообщений: 7
08.01.2022, 22:34  [ТС]
Про тэги спасибо, буду знать.

Балк это когда при нажатие на кнопку редактировать редактируется все отображаемые строки таблицы, а затем нажатием клавиши пятой сэйв сохраняются все изменения.в датабазу.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,625
Записей в блоге: 3
08.01.2022, 22:41
Цитата Сообщение от MsGuns Посмотреть сообщение
но ТС, очевидно, думает иначе
Передумает позже )
Цитата Сообщение от Bjhm Посмотреть сообщение
редактируется все отображаемые строки таблицы
Эмм.. Не совсем улавливаю сам процесс. Что значит все строки? Прям все все?

Добавлено через 3 минуты
Я бы этот механизм представлял бы примерно так:
В гриде правим нужные ячейки, они автоматом обновляются в датасете, а уж потом, некой кнопкой "Подтвердить изменения" формируется запрос к БД на Update измененных полей.
В идеале, еще надобно бы проверять значения на валидность, чтоб, к примеру, в столбец Дата не пытаться записать что-то иное..
0
0 / 0 / 0
Регистрация: 06.01.2022
Сообщений: 7
08.01.2022, 22:42  [ТС]
Ну все созданные строки в датабазе нужны в Эдит моде и сохранение изменения. Так как по одной увы нельзя и использовать какие либо формы где они будут по клику выводится тоже запретили.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
08.01.2022, 23:32
Цитата Сообщение от Bjhm Посмотреть сообщение
Так как по одной увы нельзя и использовать какие либо формы где они будут по клику выводится тоже запретили.
Или у Вас неправильные учителя или Вы их не поняли
0
0 / 0 / 0
Регистрация: 06.01.2022
Сообщений: 7
27.01.2022, 11:46  [ТС]
Проект как тестовое сделал успешно уже давно, извиняюсь, что не обновлял тему, могу если кому интересно скинуть файл с кодом. Спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.01.2022, 11:46
Помогаю со студенческими работами здесь

Нужен совет по созданию высокопроизводительной БД
Всем доброго времени суток! Я до этого сталкивался только с небольшими по объёму проектами на MySQL и Firebird. Но сейчас появилась...

Нужен совет по созданию приложения. Ot
Что может понадобиться изучить. для написание приложения? Суть приложения ....Заполняется форма разного рода информацией. И сохраняется в...

Нужен совет по созданию программы
Не подскажите, как на языке си оформить задачу, в которой пользователю предлагается выбор по типу: "Если вы хотите то-то, нажмите 1,...

Нужен совет по созданию службы
Здравствуйте! Есть написанная и работающая программа. Требуется сделать из нее службу windows. Почитав литературу, сделал следующее, в...

Нужен совет по созданию БД в Delphi
Мне необходимо создать программу-тренажёр для изучения математической логики. Я предполагаю случайным образом выбирать задания из базы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru