Ошибка преобразования типа данных in в tinyint

Я новичок в хранимых процедурах. Когда я запускаю это, я получаю сообщение об ошибке: Ошибка преобразования типа данных int в tinyint. В моем С# был следующий код:

mySqlcmd.CommandText = "EXECUTE PhoneNumber_Insert  @p_PhoneNumberTypeID, @p_PersonID";
mySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", SqlDbType.TinyInt).Value = 1;
mySqlcmd.Parameters.Add("@p_PersonID", SqlDbType.Int).Value = "754381";
mysqlConnection.Open();
mySqlcmd.ExecuteNonQuery();
mysqlConnection.Close();

Превратите 1 в byte (mySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", SqlDbType.TinyInt).Value = (byte) 1;). Дайте мне знать, если это сработает, и я напишу это как ответ

Flydog57 25.12.2020 02:26

опубликуйте свой сохраненный proc. определение. Возможно, у вас неправильно настроены типы параметров....

Mitch Wheat 25.12.2020 03:10

@Flydog57 - я сделал это, и теперь я получаю эту ошибку.

Automation89 25.12.2020 03:17

"PhoneNumber_Insert ожидает параметр @PhoneNumberTypeId, который не был предоставлен" mySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", SqlDbType.TinyInt).Value= (byte)1;

Automation89 25.12.2020 03:20
mySqlcmd.Parameters.Add("@p_PersonID", SqlDbType.Int).Value = "754381"; Почему вы передаете это как строку?
mjwills 25.12.2020 05:12

Ваш код слишком странный... В MySQL хранимая процедура выполняется с использованием ключевого слова CALL. Ключевое слово EXECUTE используется для выполнения подготовленного оператора, для которого ключевое слово USING перед его параметрами является обязательным. И вы используете пользовательские переменные в качестве параметров, значения которых нельзя присвоить через Parameters.Add.

Akina 25.12.2020 06:02

о вашей ошибке, возможно, вам нужно использовать explicitly conversion mySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", SqlDbType.TinyInt).Value = (byte)1; или mySqlcmd.Parameters.AddWithValue("@p_PhoneNumberTypeID", 1);

Hesam Akbari 25.12.2020 06:55
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
7
1 570
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы столкнулись с ошибкой 101302 в MySQL Connector/NET. Есть три возможных обходных пути:

  1. Измените свой код, чтобы явно использовать MySqlDbType.Byte: mySqlcmd.Parameters.Add("@p_PhoneNumberTypeID", MySqlDbType.Byte).Value = 1;
  2. Переход на MySql.Data 8.0.21.
  3. Переключитесь на MySqlConnector , который поддерживает тот же API, что и MySql.Data, но менее глючный.

@MitchWheat Это проблема, возникающая с различными типами данных; см. дублированный отчет об ошибке: bugs.mysql.com/bug.php?id=101424. В этом отчете об ошибке только что приведены шаги воспроизведения для BOOL.

Bradley Grainger 27.12.2020 02:08

Другие вопросы по теме