当我不断收到以下错误时,我试图更新数据库表中的字段
对象引用未设置为对象的实例。
代码:
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();
提前感谢您的帮助
答案 0 :(得分: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();
}
}
}