【发布时间】:2021-06-12 13:20:35
【问题描述】:
我有一个存储过程,通过将 bool 值从 1 更改为 0 来更新状态。我将用户 ID 传递给存储过程。我只需要更新用户状态。但现在它不这样做了。
CREATE PROCEDURE [dbo].[UpdateStatus]
@userID INT
AS
BEGIN
UPDATE [dbo].[User]
SET Status = 0
WHERE Id = @userID
END
我正在调用这个存储过程:
public User UpdateStatus(string UserId)
{
User userDetails = new User();
try
{
using (SqlConnection sqlConnection = new SqlConnection(connection.GetConnectionString()))
{
sqlConnection.Open();
SqlCommand cmd = new SqlCommand("UpdateStatus", sqlConnection);
cmd.Parameters.Add(new SqlParameter("@userID", UserId));
cmd.CommandType = CommandType.StoredProcedure;
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
userDetails.DisplayName = reader["DisplayName"].ToString();
}
}
sqlConnection.Close();
}
}
catch(Exception ex)
{
//ex.Message;
}
return userDetails;
}
我正在调用UpdateStatus 函数。但它不会更新数据库中的状态
【问题讨论】:
-
一个 UPDATE 语句不会返回一个阅读器来阅读一些东西
-
“但它没有返回任何东西。” 为什么会这样?该过程未返回数据集。您将从该过程中获得的唯一信息是
RETURN状态,这可能是0成功。 -
应该是executenonquery。您应该在另一个查询中进行选择。
-
好吧,如果 OP确实 需要返回数据,他们可能会使用
OUTPUT子句 @MonkeyDLuffy -
@Larnu 它没有更新数据库。所以返回状态为 0,预期为 1
标签: c# .net sql-server stored-procedures