Member 14026426 Ответов: 3

"Процедура или функция "updat" ожидает параметр "@username", который не был указан".


Я ХОЧУ ОБНОВИТЬ СВОЮ ТАБЛИЦУ, ЕСЛИ МНЕ НУЖНО ВРЕМЯ, ЧТОБЫ ВСТАВИТЬ ЕЕ В ОПРЕДЕЛЕННУЮ СТРОКУ
ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ

вот мой код ха-ха-ха PS. Я новичок в Си#
label1.Text = DateTime.Now.ToLongTimeString();

            con.Open();

            SqlCommand cmd = new SqlCommand("Updat", con);
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@mode2", "Update");
            cmd.Parameters.AddWithValue("@Timein", label1.Text);
            cmd.Parameters.AddWithValue("@Username", username);
            cmd.ExecuteNonQuery();
            MessageBox.Show("TIMED IN");
       
            con.Close();



ВОТ МОЙ КОД В ХРАНИМОЙ ПРОЦЕДУРЕ:
CREATE PROCEDURE [dbo].[Updat]
	@mode2 nvarchar(10),
	@Timein varchar(50),
	@Username nvarchar(50)
As
If @mode2 = 'Update'
BEGIN
UPDATE Login1
SET
Username = @Username,
Timein = @Timein
END


Что я уже пробовал:

я не знаю что делать
я не знаю что делать
я не знаю что делать
я не знаю что делать
я не знаю что делать
я не знаю что делать
я не знаю что делать
я не знаю что делать
я не знаю что делать
я не знаю что делать

Richard Deeming

UPDATE Login1 SET Username = @Username, Timein = @Timein

Этот запрос будет обновляться КАЖДЫЙ запись в таблице должна иметь то же самое Username и Timein.

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

Если вы хотите обновить определенную запись, вам понадобится WHERE пункт:
UPDATE Login1 SET Timein = @Timein WHERE Username = @Username

3 Ответов

Рейтинг:
1

Patrice T

Цитата:
я не знаю что делать

Прочтите сообщение об ошибке и ваш код!
Вам говорят, что " процедура или функция "updat" ожидает параметр "@имя пользователя- который не был поставлен.
а это значит, что
CREATE PROCEDURE [dbo].[Updat]
@mode2 nvarchar(10),
@Timein varchar(50),
@Username nvarchar(50) -- THIS PARAMETER here
As
If @mode2 = 'Update'
BEGIN
UPDATE Login1
SET
Username = @Username, -- THIS PARAMETER here
Timein = @Timein
END

не имеют никакого значения, потому что это не предусмотрено в вызывающем коде.

Мы ничего не можем сделать, потому что не знаем, что вы хотите сделать.
убедитесь, что процедура не вызывается из другого места, где отсутствует параметр.


Member 14026426

Я хочу вставить фактическое время в конкретного пользователя, но я не знаю, как вы можете мне помочь?

Рейтинг:
1

Ebenezar John Paul

Существующие ответы дают вам довольно четкое представление о том, что может быть причиной проблемы, с которой вы столкнулись. Сначала исследуйте его. [проверьте параметр @username]

Еще одна возможность:

Ваш код на самом деле выглядит нормально (если нет никаких проблем с @username)

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

- Проверьте, подключились ли вы к нужной базе данных (это будет указано в строке подключения в web.config)

- Проверьте, правильно ли вы построили проект и запустили правильную версию.

Я бы посоветовал вам использовать отладчик, чтобы разобраться в ошибке. Это поможет вам найти первопричину проблемы и в конечном итоге решить ее.


Рейтинг:
0

OriginalGriff

Используйте отладчик, и вы, вероятно, найдете его прямо здесь:

cmd.Parameters.AddWithValue("@Username", username);
То username переменная содержит null.

Итак, теперь вам нужно выяснить, почему - поэтому используйте отладчик и отследите свой код, чтобы узнать, где вы ожидаете, что в него будет помещено значение.
Что это за ценность? Откуда это взялось? Почему это не имеет значения?

Для этого нужно, чтобы приложение работало, поэтому вы можете использовать отладчик, чтобы выяснить это - мы не можем сделать это за вас, потому что мы не можем запустить ваш код!


Member 14026426

Я хочу вставить фактическое время в конкретного пользователя, но я не знаю, как вы можете мне помочь?

OriginalGriff

Извините, но мы не можем - проблема должна быть рассмотрена во время выполнения вашего кода, и вы используете свои данные: ни к одному из них у нас нет доступа!

Вам нужно использовать отладчик и посмотреть, что именно происходит, какой ie происходит - вы же знаете, как использовать отладчик, да?