0

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

你调用的对象是空的。

代码:

    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(); 

提前谢谢你的帮助

4

1 回答 1

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();
        }
    }
}
于 2014-09-07T08:22:15.557 回答