将存储过程中的值返回到C#函数



运行存储过程后,我正在计算更新了多少用户以及插入了多少用户。

CREATE PROCEDURE [dbo].[ADProcTemp]
@Username varchar(250),
@DisplayName varchar(70),
@isEnabled tinyint,
@PassNevExp tinyint,
@addedUser int OUTPUT,
@updatedUser int OUTPUT
AS  
BEGIN   
SET @addedUser = 0
SET @updatedUser = 0
IF NOT EXISTS (SELECT TOP 1 PrezimeIme FROM [dbo].[tblZaposleni_AD] WITH (NOLOCK) 
WHERE NetworkLogin = @Username)
BEGIN
IF(@isEnabled = 1 OR @PassNevExp = 1)
INSERT INTO [dbo].[tblZaposleni_AD](NetworkLogin, PrezimeIme, Status, PassNevExp)
VALUES (@Username, @DisplayName, @isEnabled, @PassNevExp)
SET @addedUser = @addedUser + @@ROWCOUNT;   
SELECT @addedUser As UkupnoDodanihKorisnika
END
ELSE
BEGIN
UPDATE [dbo].[tblZaposleni_AD]
SET Status = @isEnabled,        
PassNevExp = @PassNevExp
WHERE NetworkLogin = @Username 
AND (Status <> @isEnabled) OR (PassNevExp <>@PassNevExp)  
SET  @updatedUser =  @updatedUser + @@ROWCOUNT; 
SELECT @updatedUser As UkupnoIzmjenjenihKorisnika
END  
END

这是我的存储过程,现在我想在C#代码中显示存储过程中的@addedUser@updatedUser变量。

到目前为止,我创建了这个

public void ExcStrPrc(string Username, string DisplayName, bool isEnable, bool PassNevExp)
{
SqlConnection conn = new SqlConnection(@"Data Source=(LocalDb)MSSQLLocalDB;Initial Catalog=DesignSaoOsig1;Integrated Security=True");
SqlCommand cmd = new SqlCommand("ADProcTemp", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Username", Username.ToString().Trim());
cmd.Parameters.AddWithValue("@DisplayName", DisplayName.ToString().Trim());
cmd.Parameters.AddWithValue("@isEnabled", Convert.ToInt32(isEnable));
cmd.Parameters.AddWithValue("@PassNevExp", Convert.ToInt32(PassNevExp));
cmd.Parameters.Add("@addedUser", SqlDbType.Int).Direction = ParameterDirection.Output;
cmd.Parameters.Add("@updatedUser", SqlDbType.Int).Direction = ParameterDirection.Output;
conn.Open();
int k = cmd.ExecuteNonQuery();           
if (k != 0)
{
Console.WriteLine("Uspjesno izvrseno !");
}
Console.WriteLine("Ukupno novih korisnika {0}");
conn.Close();
}

知道如何显示从存储过程到C#函数的计数器吗?我在函数内部添加了,现在我在输出中没有得到任何数据。。。

TBH是很久以前的事了,因为我在输出参数上搞砸了,但你添加了输出参数,但从来没有检查过。您需要的值应该在这些参数中。我建议你尝试获得这些值,比如(当然在执行之后(:

var addedUserCount = (int)cmd.Parameters["@addedUser"].Value;

或者类似的

最新更新