gpt4 book ai didi

c# - 从 C# 中的存储过程返回多个值

转载 作者:行者123 更新时间:2023-12-02 04:43:01 25 4
gpt4 key购买 nike

我需要从应用程序中的存储过程返回 2 个值。下面是我的应用程序中的代码片段。我需要在相应的插入语句之后获取下面的 SureveyID 和 InputID 的值。

        int surveyId = 0;
int inputId = 0;
SqlDataManager manager = new SqlDataManager();
manager.AddParameter("@Name", surveyInstance.SurveyName);
manager.AddParameter("@Type", surveyInstance.SurveyType);
manager.AddParameter("@UserId", surveyInstance.UserId);
manager.AddParameter("@InputType", surveyInstance.InputType);
manager.AddParameter("@DisplayName", surveyInstance.DisplayName);
manager.AddOutputParameter("@SurveyID",System.Data.DbType.Int32,surveyId);
manager.AddOutputParameter("@InputID", System.Data.DbType.Int32,inputId);
manager.ExecuteNonQuery("pr_CreateSurvey");

AddParameter & AddOutputParameter 是自定义方法,如下所示

 public void AddParameter(string parameterName, DbType parameterType, object        parameterValue)
{
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = parameterName;
parameter.DbType = parameterType;
parameter.Value = parameterValue;
parameters.Add(parameter);
}

public void AddOutputParameter(string parameterName, DbType parameterType, object parameterValue)
{
SqlParameter parameter = new SqlParameter();
parameter.ParameterName = parameterName;
parameter.DbType = parameterType;
parameter.Value = parameterValue;
parameter.Direction = ParameterDirection.Output;
parameters.Add(parameter);
}

下面是存储过程的代码片段

ALTER PROCEDURE [dbo].[pr_CreateSurvey] 
-- Add the parameters for the stored procedure here
@Name varchar(50),@Type varchar(50),@UserId varchar(50),@InputType varchar(50),@DisplayName varchar(50),
@SurveyID int OUTPUT,@InputID int OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
Insert into surveys(name,user_id,display_name,type) values(@Name,@UserId,@DisplayName,@Type)
SET @SurveyID = SCOPE_IDENTITY()
Insert into input_types(name) values (@InputType)
SET @InputID = SCOPE_IDENTITY()
END

插入语句工作正常,但我没有在我的应用程序中取回任何值。它的 0。我尝试使用以下语句返回 1 个值 (SurveyID),但仍未获得正确的值。它每次都返回 -1。

surveyId = manager.ExecuteNonQuery("pr_CreateSurvey");

我尝试了很多,但没有成功。请指教。

最佳答案

在您的 SqlCommand 的 Parameters 集合中找到输出参数的值...就像

mySqlCommand.Parameters["@SurveyID"].Value

在你执行之后

mySqlCommand.ExecuteNonQuery();

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

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