(Ссылка на объект не установлена ​​на экземпляр объекта) при обновлении таблицы 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();
        }
    }
}
Другие вопросы по тегам