(更新sql表时,对象引用未设置为对象的实例)

时间:2014-09-07 08:19:40

标签: c# sql asp.net sql-server updatecommand

当我不断收到以下错误时,我试图更新数据库表中的字段

  

对象引用未设置为对象的实例。

代码:

    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 个答案:

答案 0 :(得分:1)

您收到异常是因为您从未指定UpdateCommandSqlDataAdapter的构造函数仅设置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();
        }
    }
}