Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Telnow
10 / 10 / 1
Регистрация: 08.04.2022
Сообщений: 187

Не редактируется одно поле с базе при помощи метода

09.05.2025, 15:27. Показов 1384. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть метод через который вносятся изменения в базу (база на DBF), но одно поле ID не хочет редактироваться, что я делаю не так? Может быть условие не должно быть знаком - ?.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static void EditUser(DataUser item)
{
    using (OleDbConnection connection = new OleDbConnection(Connection.ConnectionString()))
    {
        connection.Open();
        using (OleDbCommand cmd = new OleDbCommand("UPDATE TEST SET ID = ?, NAME = ?, LASTNAME = ?, DATE = ? WHERE ID = ?", connection))
        {
            cmd.Parameters.Add(new OleDbParameter { ParameterName = "ID", OleDbType = OleDbType.Numeric }).Value = item.Id;
            cmd.Parameters.Add(new OleDbParameter { ParameterName = "NAME", OleDbType = OleDbType.Char }).Value = item.Name;
            cmd.Parameters.Add(new OleDbParameter { ParameterName = "LASTNAME", OleDbType = OleDbType.Char }).Value = item.LastName;
            cmd.Parameters.Add(new OleDbParameter { ParameterName = "DATE", OleDbType = OleDbType.Date }).Value = item.Date;
            cmd.Parameters.Add(new OleDbParameter { ParameterName = "ID", OleDbType = OleDbType.Numeric }).Value = item.Id;
            try
            {
                cmd.ExecuteNonQuery();
                XtraMessageBox.Show("Запись отредактирована!", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception)
            {
                XtraMessageBox.Show("Ошибка при редактировании", "Информация", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}
Добавлено через 1 минуту
Могу выложить весь проект, если не понятно, он не тяжелый.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.05.2025, 15:27
Ответы с готовыми решениями:

Не редактируется исходный код при отладке
Помогите плиз. После перехода на VS 2010 express программа не дает редактировать код в процессе...

Как правильно написать редактирование ячейки DataGridView, если она редактируется в режиме забоя?
Ну то есть надо так сделать, чтобы, например длина содержимого ячейки была не больше, например 7; ...

Не редактируется DataGridView, что я делаю не так?
Всем привет! С С# ещё не дружу, только присматриваемся друг к другу :) Но на работе заставляют...

14
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
09.05.2025, 17:45
И зачем тебе редактировать первичный ключ?
0
 Аватар для Telnow
10 / 10 / 1
Регистрация: 08.04.2022
Сообщений: 187
09.05.2025, 17:46  [ТС]
IamRain,

Заказчику это понадобилось
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
09.05.2025, 17:52
Цитата Сообщение от Telnow Посмотреть сообщение
Заказчику это понадобилось
А заказчик понимает для чего нужен первичный ключ?

Добавлено через 1 минуту
Многие СУБД имеют "защиту от дурака", не давая сменить PK.
Если очень хочется, то наверно найдется способ, но "защита от дурака" должна заставить задуматься, а нужно ли это делать.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
09.05.2025, 17:52
Если это твой единственный аргумент, то тебе это не нужно.
0
 Аватар для Telnow
10 / 10 / 1
Регистрация: 08.04.2022
Сообщений: 187
09.05.2025, 17:52  [ТС]
IamRain,

Нет, не понимает. Тогда мне проще будет добавить новое поле в DBFку (SEQUENCE) и использовать его в качестве первичного ключа.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
09.05.2025, 17:56
Цитата Сообщение от Telnow Посмотреть сообщение
Тогда мне проще будет добавить новое поле в DBFку (SEQUENCE) и использовать его в качестве первичного ключа.
А поле ID тебе на что тогда? Просто не надо его обновлять и все. Проблема решена.
0
 Аватар для Telnow
10 / 10 / 1
Регистрация: 08.04.2022
Сообщений: 187
09.05.2025, 18:05  [ТС]
IamRain, Подскажи как создать такое поле чтобы на каждую новую строку добавлялся уникальный айди

Добавлено через 6 минут
IamRain, Мысль в голову приходит что нужно создать еще одну ДБФку и генерить сиквенс в ней.
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
09.05.2025, 18:32
Лучший ответ Сообщение было отмечено Telnow как решение

Решение

У тебя ведь уже есть первичный ключ, попробуй изменить на него констраинт и добавить sequence.
И это не решает проблемы - зачем тебе обновлять первичный ключ? Просто не обновляй его.

Добавлено через 1 минуту
Речь не про sequence в твоем вопросе, а про обновление ненужных вещей.

Добавлено через 3 минуты
В интернетах пишут, что PK могут обновляться, только если они изначально были задизайнены на какие-то атрибуты сущностей, которые могут меняться.
Например, если имя/login пользователя является PK, и пользователь изменил свой login. Тогда да, надо менять PK.
В остальных случаях, когда PK - число
OleDbType.Numeric
Не надо ничего обновлять.
1
 Аватар для Telnow
10 / 10 / 1
Регистрация: 08.04.2022
Сообщений: 187
09.05.2025, 18:49  [ТС]
IamRain,

В этом случае ладно, ничего делать не буду.
Есть еще один проект в котором первичный ключ это поле - Login, вот там первичный ключ нужно поменять на другое поле, добавить SEQUENCE

Добавлено через 15 минут
Спасибо! Очень помог мне!
0
HF
 Аватар для HF
1311 / 889 / 200
Регистрация: 09.09.2011
Сообщений: 2,636
Записей в блоге: 2
10.05.2025, 00:05
Цитата Сообщение от IamRain Посмотреть сообщение
И зачем тебе редактировать первичный ключ?
А если бы это был не первичный ключ?

По мне, в первую очередь, здесь на лицо неосмысленное и бесполезное действие.
T-SQL
1
"... SET ID = ? ... WHERE ID = ?"
Меняем значение на это же значение чтобы зачем?

А ещё почему-то ни один не спросил - "А какого лешего почему у тебя catch (Exception) вроде есть, а смысла в нём нет? Было бы исключение - была бы и конкретная ошибка, и не было бы глупых вопросов.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3399 / 2721 / 574
Регистрация: 04.09.2018
Сообщений: 8,546
Записей в блоге: 3
11.05.2025, 01:25
Цитата Сообщение от HF Посмотреть сообщение
А ещё почему-то ни один не спросил - "А какого лешего почему у тебя catch (Exception) вроде есть, а смысла в нём нет?
Ну, вроде какой-то 'XtraMessageBox' показывает "Ошибка при редактировании"... Какая ошибка не понятно, но показывает же! Поэтому и не спросили

Интереснее вот это:
Цитата Сообщение от Telnow Посмотреть сообщение
Есть еще один проект в котором первичный ключ это поле - Login
Вот эт дааааа!
0
Эксперт .NET
 Аватар для Usaga
14127 / 9347 / 1350
Регистрация: 21.01.2016
Сообщений: 35,125
11.05.2025, 02:06
Цитата Сообщение от Telnow Посмотреть сообщение
Заказчику это понадобилось
Что-то мне подсказывает, что ты и есть этот самый заказчик... Ибо настоящему заказчику до фонаря на все эти технические моменты. А вот программисты-новички как раз таки любители какой-нибудь Login сделать ключом или ID переписывать, чтобы "зазоров" не было после удаления записей...
2
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,228
11.05.2025, 02:22
Цитата Сообщение от HF Посмотреть сообщение
а смысла в нём нет?
Почему нету? - все есть, используется для control flow - вывод сообщения об ошибке. Довести до лица пользователя, что что-то пошло не так. Такое тоже практикуется.

Цитата Сообщение от HF Посмотреть сообщение
А если бы это был не первичный ключ?
Тогда бы я обратил внимание на то, что поле, по которому ищем, обновлять не стоит.
Но по постановке вопроса понятно ведь, что есть что.
0
11.05.2025, 02:23

Не по теме:

Цитата Сообщение от Usaga Посмотреть сообщение
Ибо настоящему заказчику до фонаря на все эти технические моменты.
Еще с утра хотел то же написать, но отвлекся. Прям в точку!

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2025, 02:23
Помогаю со студенческими работами здесь

При запуске из WinForms окна из dll WPF в окне WPF не редактируется DataGrid
Какс сделать чтобы данные которые я ввожу на клавиатуре отображались в редактируемой ячейке...

Как проверить редактируется ли в данный момент DataGrid?
При открытии окна Загружаю коллекцию в DataGrid, если я закрываю окно и открываю его снова(при этом...

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что...

Как получить в программе адрес файла, при попытке открыть его с помощью функции "открыть с помощью"
Доброго времени суток. Второй день ищу ответ на вопрос: как получить в программе адрес файла,...

С помощью делегата из одного класса вызвать private метод с другого класса
доброго времени суток. такой вопрос. С применением делегатов и пониманием проблем нет когда...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru