Нарушение параллелизма при использовании mysql VB.NET обновление таблицы мастера
При подключении DataGrideView к базе данных MySQL, всегда отменяю de изменения поля и пытаюсь обновить точную исходную информацию, я получил ошибку "нарушение параллелизма: команда UpdateCommand затронула 0 из ожидаемых 1 записей"
Это однопользовательское приложение.
Загружаю данные, меняю поле, потом ставлю как загружено и ошибка.
мой код:
Me.Validate() Me.TesteBindingSource.EndEdit() Me.TesteTableAdapter.Update(Me.DataSetMySQL_TESTE.teste)
Что я уже пробовал:
Если я изменил данные в поле, все в порядке. Но если изменения равны, как при загрузке, то ошибка!
0x01AA
Просто посмотрите прямо на странице CP в разделе "Связанные вопросы". Я думаю, вы найдете ответ на этот вопрос. Кстати. похоже не на "реальную ошибку", а на то, что "затронутые записи" возвращают "0" для обновления.
Maciej Los
Какой драйвер MySql вы используете?
RZ50
Драйвер MySQL ODBC 5.1
Maciej Los
Есть ли какая-то причина использовать ODBC? Я бы использовал MySQL Connector для .NET. Видеть: MySQL - odbc - должен ли я использовать Connector/NET или Connector/ODBC для разработки своего приложения?[^]
Какое поле вызывает такую ошибку? Я предполагаю, что это числовое значение...
RZ50
моя таблица (тест) проста:
pk INT(11)
ном тип varchar(45)
моего запроса:
Тест обновления установлен ном =? Где (pk =?)
если я изменяю неправильную запись в DataGridView и сбрасываю исходную информацию, а затем я изменяю правильную запись, и при обновлении она дает мне эту ошибку, и я теряю информацию о правильной записи...
Maciej Los
Как вы сбрасываете информацию? Какой метод вы используете?
RZ50
С клавиатурой.
Кол-во номе
1 abc --> Я изменил на AB, а затем удалил с клавиатуры, чтобы остаться тем же abc
2 xyz --> я перешел на AB это чтобы остаться
после сохранения дайте мне ошибку на записи 1 и потеряйте информацию о rec2
Maciej Los
Кажется, вам нужно отклонить изменения в коде, прежде чем вы начнете еще одно изменение.
Пожалуйста, прочтите это: Обновление источников данных с помощью адаптеров данных - ADO.NET | Microsoft Docs[^]
RZ50
После прочтения Вашего предложения я нашел эту заметку: "это приводит к тому, что число затронутых строк возвращается равным нулю, что DataAdapter интерпретирует как конфликт параллелизма. В этом случае будет вызвано исключение DBConcurrencyException."
Поэтому в моем драйвере я меняю опцию "возвращать совпадающие строки вместо затронутых строк" на true, и проблема решена!
Спасибо вам за все...
Maciej Los
Отлично! Я предлагаю опубликовать это как ответ (и принять его с помощью зеленой кнопки), чтобы удалить ваш вопрос из списка без ответа.