С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 1
Регистрация: 28.01.2014
Сообщений: 144
PostgreSQL

Почему удаляет всю таблицу?

08.01.2024, 02:04. Показов 1187. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пжл, почему удаляет всю таблицу , а не только строку одну.
Таблица состоит из первичного ключа(id) и должности (post)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void button2_Click(object sender, EventArgs e)
     {
            NpgsqlConnection conn = new NpgsqlConnection("Server = localhost;Port = 5432; Database = postgres; username = postgres; Password=01234567;");
 
            conn.Open();
            NpgsqlCommand comm = new NpgsqlCommand();
            comm.Connection = conn;
            
            NpgsqlCommand cmd5 = new NpgsqlCommand("DELETE FROM post_worker WHERE id = @id;",conn);
    
            cmd5.ExecuteNonQuery();
            try
            {
                conn.Open();
                int rowsAffected = cmd5.ExecuteNonQuery();
            }
            catch (Exception ex)
            { Console.WriteLine(ex.Message); }
 
                
            }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.01.2024, 02:04
Ответы с готовыми решениями:

Обновить всю таблицу в БД
хочу обновить всю таблицу БД, как изменить код, чтобы заработало обновление? using System; using System.Collections.Generic; using...

Как записать всю таблицу ASCII в строковый массив?
как в строковый массив на C# записать всю таблицу ASCII ? типа так string alfarus = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; только в массив...

Как всю таблицу datagridview со всеми стилями и выделениями отправить по почте?
Добрый день, как полностью всю таблицу datagridview со всеми стилями и выделениями отправить по почте? В данный момент использую...

6
Эксперт .NET
 Аватар для Usaga
14108 / 9325 / 1349
Регистрация: 21.01.2016
Сообщений: 35,022
08.01.2024, 10:17
tru2, удаляет не таблицу, а все записи в таблице.

И я не вижу, где параметр @id в запрос передаётся. Его значение базе бог подскажет?)
0
1339 / 919 / 264
Регистрация: 08.08.2014
Сообщений: 2,765
08.01.2024, 10:19
Странно, что оно вообще работает, т.к. в запросе есть параметр '@id', значение которого вы потом нигде не задаёте до выполнения.

Ну и сама логика у вас очень странная - открываете соединение, создаёте команду, потом выкидываете эту команду, создаёте новую и выполняете её без задания параметра '@id', потом снова зачем-то пытаетесь открыть уже открытое соединение и снова выполнить ту же команду . Это зачем так?

В общем виде будет как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void button2_Click(object sender, EventArgs e)
{
    using (var conn = new NpgsqlConnection(/* строка подключения */)
    {
        conn.Open();
 
        var cmd = new NpgsqlCommand("DELETE FROM post_worker WHERE id = @id;", conn);
 
        // TODO: 
        //  тут создать параметр нужного типа с нужным значением ID 
        //  синтаксис может быть разный, подробности в документации Npgsql
        cmd.Parameters.AddWithValue("@id", NpgsqlDbType.Integer, /* значение ID */);
 
        cmd.ExecuteNonQuery();
    }
}
0
Эксперт .NET
 Аватар для Usaga
14108 / 9325 / 1349
Регистрация: 21.01.2016
Сообщений: 35,022
08.01.2024, 10:19
Цитата Сообщение от tru2 Посмотреть сообщение
NpgsqlCommand comm = new NpgsqlCommand();
            comm.Connection = conn;
А это зачем? В никуда код) И зачем подключение дважды открывать? Чтобы понадёжнее было?)
0
643 / 338 / 139
Регистрация: 19.10.2013
Сообщений: 1,209
08.01.2024, 13:58
Цитата Сообщение от kotelok Посмотреть сообщение
Странно, что оно вообще работает, т.к. в запросе есть параметр '@id', значение которого вы потом нигде не задаёте до выполнения.
тоже интересно

C#
1
2
3
4
5
6
7
8
9
10
11
12
     using (NpgsqlConnection conn = new NpgsqlConnection("Server = localhost;Port = 5432; Database = postgres; username = postgres; Password=01234567;"))
     {
         using (NpgsqlCommand cmd5 = new NpgsqlCommand("DELETE FROM post_worker WHERE id = @id;", conn))
         {
             cmd5.Parameters.AddWithValue("@id", "откуда там приходит");
 
             conn.Open();
 
             int rowsAffected = cmd5.ExecuteNonQuery();
 
         }
     }
И строку подключения вынесите в файл app.config
1
643 / 338 / 139
Регистрация: 19.10.2013
Сообщений: 1,209
08.01.2024, 20:18
Цитата Сообщение от tru2 Посмотреть сообщение
@id;
и точка с запятой после id, это тоже postgres ест?
1
1 / 1 / 1
Регистрация: 28.01.2014
Сообщений: 144
08.01.2024, 22:03  [ТС]
116rus, Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.01.2024, 22:03
Помогаю со студенческими работами здесь

Навигатор удаляет всю таблицу вместо выбранной записи
При нажатии на кнопку удалить на навигаторе , он удаляет выбранную запись, но когда я обновляю таблицу даже не через навигатор (даже если...

Почему не заполняет всю таблицу?
Есть класс, который должен выводить все записи из базы в таблицу, но почему-то он оставляет первую колонну пустую(ID - primary key) /* ...

Антивирус Avira удаляет всю мою прогу написанную на Delphi. Принимает их за вирусами Win32/Induc.A
Почему Авира удаляет всю мою прогу написанное на Делфи... Принимает их за вирусами Win32/Induc.A

Регулярка удаляет таблицу в Ворде
здравствуйте как от этого избавиться?, такая реакция на любую замену, например 'заменяем ё на е objRegExp.Pattern = "ё" ...

Удаляет самую первую таблицу DELTE
КОд: Форма echo "<div'>"; $rowloseba = ("SELECT * FROM `d2l_reportlist` WHERE `rl_date`"); $raba = mysql_query($rowloseba)...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru