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

Ошибка "System.Data.SqlClient.SqlException: "The parameterized query"

13.12.2023, 16:31. Показов 1266. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, я нашёл код для информационной системы библиотеки и под него создал базу данных. И вроде весь функционал работает, но при создании заявки пользователем возникает ошибка: "System.Data.SqlClient.SqlException: "The parameterized query '(@bId int,@bName nvarchar(14),@date datetime,@uId int,@uName nva' expects the parameter '@uName', which was not supplied."".

Вот код, в котором срабатывает исключение:

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class UserRequestDAL
    {
        public bool AddRequestDAL(int bookId, string bookName, int userId, string userName)
        {
            SqlConnection conn = new SqlConnection("Server=(LocalDB)\\MSSQLLocalDB; Database=Library; Integrated Security=true");
            SqlCommand cmd = new SqlCommand("AddRequest @bId, @bName, @date, @uId, @uName", conn);
            cmd.Parameters.Add(new SqlParameter("@bId", bookId));
            cmd.Parameters.Add(new SqlParameter("@bName", bookName));
            cmd.Parameters.Add(new SqlParameter("@date", DateTime.Now.Date));
            cmd.Parameters.Add(new SqlParameter("@uId", userId));
            cmd.Parameters.Add(new SqlParameter("@uName", userName));
            conn.Open();
            int rowAffected = cmd.ExecuteNonQuery();
            conn.Close();
            if (rowAffected > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }


Хранимая процедура AddRequest:
Кликните здесь для просмотра всего текста
T-SQL
1
2
3
4
ALTER procedure [dbo].[AddRequest] (@bookId int, @bookName varchar(50), @date date, @userId int, @userName varchar(50)) as
begin
insert into tblRequestedUsers values (@bookId, @bookName, @date, @userId, @userName);
    end


Я посмотрел, что значения bookId, bookName и date поступают корректные, но вот userId всегда равно 1, а userName всегда null.

Также прикладываю процедуру TakeUserName, которая должна получать имя пользователя от его id и два кода, которые с ней связаны.

Хранимая процедура TakeUserName:
Кликните здесь для просмотра всего текста
T-SQL
1
2
3
4
ALTER procedure [dbo].[TakeUserName] (@userId int) as
begin
    select UserName from tblUsers where UserId = @userId;
END


Первый код:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
public class UserRequestBL
    {
        public bool AddRequestBL(int bookId, string bookName, int userId)
        {
            UserDAL userDAL = new UserDAL();
            string userName = userDAL.TakeUserNameDAL(userId);
            UserRequestDAL userRequestDAL = new UserRequestDAL();
            bool isDone=userRequestDAL.AddRequestDAL(bookId, bookName, userId, userName);
            return isDone;
        }


Второй код:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
 public string TakeUserNameDAL(int userId)
        {
            SqlConnection conn = new SqlConnection("Server=(LocalDB)\\MSSQLLocalDB; Database=Library; Integrated Security=true");
            SqlCommand cmd = new SqlCommand("TakeUserName @userId", conn);
            cmd.Parameters.Add(new SqlParameter("@userId", userId));
            conn.Open();
            string userName = (string)cmd.ExecuteScalar();
            conn.Close();
            return userName;
        }


Заранее благодарю всех ответивших
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2023, 16:31
Ответы с готовыми решениями:

.Net SqlClient Data Provider
Не хочет устанавливаться движок для сайтов NotNetNuke 7, после ввода всего необходимого пишет ошибку : MS SQL Server 2008 Express: ...

Ошибка System.Data.SqlClient.SqlException
Прошу помощи в таком простом тексте: использую dataGridView для работы с двумя таблицами из БД. Заполняется dataGridView нормально....

Ошибка System.Data.SqlClient.SqlException неправильный синтаксис около конструкции
system.data.sqlclient.sqlexception неправильный синтаксис около конструкции string strIP1 = ""; System.Net.IPHostEntry...

6
46 / 35 / 11
Регистрация: 16.10.2011
Сообщений: 121
13.12.2023, 18:11
замените
Цитата Сообщение от IceBurn Посмотреть сообщение
SqlCommand cmd = new SqlCommand("AddRequest @bId, @bName, @date, @uId, @uName", conn);
на
C#
1
2
SqlCommand cmd = new SqlCommand("AddRequest", conn);
cmd.CommandType = CommandType.StoredProcedure
1
0 / 0 / 0
Регистрация: 02.03.2021
Сообщений: 11
13.12.2023, 19:19  [ТС]
@k@lYaN, с Вашим кодом стало выдавать новую ошибку "System.Data.SqlClient.SqlException: "Procedure or function 'AddRequest' expects parameter '@bookId', which was not supplied.""
0
46 / 35 / 11
Регистрация: 16.10.2011
Сообщений: 121
13.12.2023, 20:08
Назовите параметры как в процедуре
Цитата Сообщение от IceBurn Посмотреть сообщение
cmd.Parameters.Add(new SqlParameter("@bId", bookId));
cmd.Parameters.Add(new SqlParameter("@bName", bookName));
cmd.Parameters.Add(new SqlParameter("@date", DateTime.Now.Date));
cmd.Parameters.Add(new SqlParameter("@uId", userId));
cmd.Parameters.Add(new SqlParameter("@uName", userName));
Цитата Сообщение от IceBurn Посмотреть сообщение
ALTER procedure [dbo].[AddRequest] (@bookId int, @bookName varchar(50), @date date, @userId int, @userName varchar(50))
Добавлено через 21 минуту
лучше с указанием типа
C#
1
cmd.Parameters.Add("@bookId", SqlDbType.Int).SourceColumn = "bookId";
Добавлено через 12 минут
переработал...то для таблицы было
C#
1
cmd.Parameters.AddWithValue("@bookId", bookId);
1
0 / 0 / 0
Регистрация: 02.03.2021
Сообщений: 11
13.12.2023, 21:27  [ТС]
@k@lYaN, исправил параметры, теперь ошибка "System.Data.SqlClient.SqlException: "Procedure or function 'AddRequest' expects parameter '@userName', which was not supplied.". Всё также не может определиться пользователь, который оставляет заявку (userId = 1, userName = null).
0
46 / 35 / 11
Регистрация: 16.10.2011
Сообщений: 121
14.12.2023, 08:14
Лучший ответ Сообщение было отмечено IceBurn как решение

Решение

Цитата Сообщение от IceBurn Посмотреть сообщение
"Procedure or function 'AddRequest' expects parameter '@userName', which was not supplied."
Другими словами в процедуре AddRequest есть параметр @userName, который не задан в SqlCommand - точно так переименован?

Добавлено через 35 минут
Цитата Сообщение от IceBurn Посмотреть сообщение
SqlCommand cmd = new SqlCommand("TakeUserName @userId", conn);
аналогично этому переделано?
Цитата Сообщение от k@lYaN Посмотреть сообщение
SqlCommand cmd = new SqlCommand("AddRequest", conn);
cmd.CommandType = CommandType.StoredProcedure
Добавлено через 4 минуты
В коде нет откуда берется userId, может он там по умолчанию 1, а userName смотрите в таблице tblUsers
1
0 / 0 / 0
Регистрация: 02.03.2021
Сообщений: 11
14.12.2023, 14:01  [ТС]
@k@lYaN, действительно проблема была с userId, в процедуре авторизации пользователя при вводе почты и пароля я получал все данные таблицы, вместо userId, а также переименовал параметры в соответствии с кодом. Дай Бог вам здоровья и всего самого наилучшего. С Наступающим вас, мистер Колян!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.12.2023, 14:01
Помогаю со студенческими работами здесь

Не знаю в чем ошибка и как исправить System.Data.SqlClient.SqlException: "Must declare the scalar variable
Здравствуйте, Работаю с базой данных в windowsform. Пытаюсь написать кнопку обновления, но постоянно ругается уже не знаю что делать. ...

System.Data.SqlClient.SqlException: "Ошибка преобраз знач varchar "System.Func`1[System.String]" в тип данных int."
Делаю программу где есть кнопки "Сохранение", "Удаление, "Изменения" для datagridview, кнопка "удаление" строки из БД и...

При запуске программы отображается:Необработанное исключение типа "System.Data.SqlClient.SqlException" в System.Data.dll
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

System.Data.SqlClient.SqlException
Здравствуйте, столкнулся с такой ошибкой Помогите, пожалуйста, с решением Код: namespace ASKUE { public partial class main...

System.Data.SqlClient.SqlException
здравствуйте. такая проблема возникала. есть программа написанная не мной. В с# я новичок, как собственно и в общем программирование. ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru