(Ссылка на объект не установлена на экземпляр объекта) при обновлении таблицы SQL
Я пытаюсь обновить поле в таблице базы данных, когда я получаю следующую ошибку
В экземпляре объекта не задана ссылка на объект.
Код:
public void WILF(string whatIsPlaying)
{
using (SqlConnection con = new SqlConnection(conString))
{
SqlDataAdapter sda = new SqlDataAdapter("WatchedLast", con);
sda.SelectCommand.CommandType = CommandType.StoredProcedure;
sda.SelectCommand.Parameters.AddWithValue("@a", whatIsPlaying);
sda.SelectCommand.Parameters.AddWithValue("@b", Variables.UserId);
con.Open();
sda.UpdateCommand.ExecuteNonQuery();
}
}
и вот моя процедура магазина (в случае, если это необходимо)
ALTER PROCEDURE WatchedLast
@a nvarchar(30),
@b uniqueidentifier
As
BEGIN
UPDATE aspnet_Membership
SET WILO = @a
WHERE (UserId = @b)
END
Я прошел пошаговую отладку, чтобы увидеть, являются ли переменные (whatIsPlaying и Variables.UserId) пустыми, но это не так. значения установлены в них. Я продолжаю получать сообщение об ошибке
sda.UpdateCommand.ExecuteNonQuery();
заранее благодарю за помощь
1 ответ
Решение
Вы получаете исключение, потому что вы никогда не указываете UpdateCommand
, Конструктор для SqlDataAdapter
только настройка SelectCommand
,
Кроме того, я не вижу необходимости в SqlDataAdapter
Вот. Я бы просто использовал SqlCommand
:
public void WILF(string whatIsPlaying)
{
using (SqlConnection con = new SqlConnection(conString))
{
con.Open();
using (var cmd = con.CreateCommand())
{
cmd.CommandText = "WatchedLast";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@a", whatIsPlaying);
cmd.Parameters.AddWithValue("@b", Variables.UserId);
cmd.ExecuteNonQuery();
}
}
}