gpt4 book ai didi

c# - SQL Server 存储过程返回值,并在 C# 中使用

转载 作者:太空狗 更新时间:2023-10-30 01:36:30 24 4
gpt4 key购买 nike

我的应用程序允许用户将新玩家添加到数据库中。在添加新玩家之前,我想要一个存储过程来检查是否存在具有名字和姓氏的玩家。我希望存储过程返回一个 bit 值,01。然后,我的 C# 方法将返回此值,程序可以决定是否继续创建。

请注意,我已经从下面的代码中删除了一些常规验证,即字段是否为空,或者余额 TextBox 是否无效等。

我还知道我在处理返回值时可能使用了错误的数据类型。即 int 而不是 bool

当我运行它时,我收到一条错误消息,指出我的 SP 需要一个输入参数 @ReturnedValue

干杯

 Player newPlayer = new Player();
newPlayer.PlayerID = Guid.NewGuid();
newPlayer.FirstName = TextBoxFirstName.Text;
newPlayer.LastName = TextBoxLastName.Text;
newPlayer.Balance = Convert.ToDouble(TextBoxInitialCredit.Text);

var exists = newPlayer.CheckExists();

if (exists == 1)
{
newPlayer.AddPlayer();
}

方法如下:

 public int CheckExists()
{
SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["Badminton"].ConnectionString);

myConnection.Open();

SqlCommand SqlCmd = new SqlCommand("CheckPlayerExists", myConnection);
SqlCmd.CommandType = CommandType.StoredProcedure;

SqlCmd.Parameters.Add("@FirstName", SqlDbType.NVarChar, 50).Value = FirstName;
SqlCmd.Parameters.Add("@LastName", SqlDbType.NVarChar, 50).Value = LastName;
SqlCmd.Parameters.Add("@ReturnValue", SqlDbType.Int, 2).Direction = ParameterDirection.Output;

SqlDataAdapter myDataAdapter = new SqlDataAdapter(SqlCmd);
DataSet myDataSet = new DataSet();
myDataAdapter.Fill(myDataSet);

int exists = Convert.ToInt32(SqlCmd.Parameters["@ReturnValue"].Value);

myConnection.Close();

return exists;
}

现在我的存储过程:

CREATE PROCEDURE dbo.CheckPlayerExists
@firstName nvarchar(50),
@lastName nvarchar(50),
@ReturnValue bit output
AS
BEGIN
IF EXISTS (SELECT * FROM Players WHERE FirstName = @firstName AND LastName = @lastName)
SET @ReturnValue = 1
ELSE
SET @ReturnValue = 0

RETURN @ReturnValue
END

最佳答案

首先,您发布的信息有些不一致。参数是@ReturnValue还是@ReturnedValue?仅此一项就可能是问题所在。

其次,将 @ReturnedValue 参数的存储过程声明更改为

@ReturnValue bit = 0 output

或者更改添加输出参数的C#代码:

SqlParameter p = new SqlParameter();
p.ParameterName = "@ReturnedValue";
p.SqlDbType = SqlDbType.Int;
p.Value = 0;
p.Direction = ParameterDirection.InputOutput;
SqlCmd.Parameters.Add(p);

关于c# - SQL Server 存储过程返回值,并在 C# 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22073333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com