【问题标题】:How to pass int parameter to DATASET implemented interface method in C#如何将 int 参数传递给 C# 中的 DATASET 实现的接口方法
【发布时间】:2020-11-14 16:50:32
【问题描述】:

下面是我实现的代码的快速阅读

ILogic.cs 文件中声明的接口。

DataSet updateStatus();

在 CLogic.cs 文件中返回接口。

public DataSet updateStatus()
{
    return this.Repository.updateStatus();
}

Repository.cs 文件中的接口方法实现,该方法的正确实现方式是什么。

public DataSet updateStatus()
{
    try
    {
        dataSet = new DataSet();
        using (SqlCommand cmd = new SqlCommand(StoredProcedures.JobStausUpdate, conETLITG))
        {
            conITG.Open();
            SqlDataAdapter adapt = new SqlDataAdapter(cmd);
            adapt.SelectCommand.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add(jobid);
            adapt.Fill(dataSet);
            conITG.Close();
        }
        return dataSet;
    }
    catch (Exception es)
    {
        throw es;
    }
}

Program.cs 文件中的调用方法如下,那么我如何在updateStatus 中传递@Execution_Job_ID

intjobId=86746;    
commonLogic.updateStatus(jobId);

SQL 存储过程

 CREATE PROCEDURE JobStausUpdate  
    ( @Execution_Job_ID INT
)   
AS   
  BEGIN  
  SELECT TOP 3   
               ji.jobname,   
               jel.*   
    INTO       #tempjobstatus   
    FROM       joblog jel    
    INNER JOIN jobinfo ji   
    ON         jel.jobid=ji.jobid   
    WHERE      jel.jobid IN (67,89,44)   
    AND        jel.joblogid <= @Execution_Job_ID   
    ORDER BY   2 DESC  
      
 DECLARE @ARefresh  VARCHAR(30),   
      @BRefresh  VARCHAR(30),   
      @statusId INT,  
      @statusReturn INT  
   SET @ARefresh =   
    (   
           SELECT jobstatus   
           FROM   #tempjobstatus   
           WHERE  jobname ='aRefresh')  
     IF (@ARefresh = 'Failed')   
    BEGIN   
      SET @BRefresh =   
      (   
             SELECT jobstatus   
             FROM   #tempjobstatus   
             WHERE  jobname ='bRefresh')   
      IF (@BRefresh = 'In Progress')   
      BEGIN   
        SET @statusId =   
        (   
               SELECT joblogid   
               FROM   #tempjobstatus   
               WHERE  jobname ='bRefresh')   
        UPDATE joblog   
        SET    jobstatus = 'Failed'   
        WHERE  joblogid = @statusId   
        SET    @statusReturn=1   
      END   
      ELSE SET @statusReturn =0  
    END   
 ELSE  IF (@ARefresh = 'Completed')   
    BEGIN   
      SET @BRefresh =   
      (   
             SELECT jobstatus   
             FROM   #tempjobstatus   
             WHERE  jobname ='bRefresh')   
      IF (@BRefresh = 'In Progress')   
      BEGIN   
        SET @statusId =   
        (   
               SELECT joblogid   
               FROM   #tempjobstatus   
               WHERE  jobname ='bRefresh')   
        UPDATE joblog   
        SET    jobstatus = 'Completed'   
        WHERE  joblogid = @statusId   
        SET    @statusReturn=1   
      END   
      ELSE SET @statusReturn =0  
    END   
    ELSE   
   BEGIN   
    SET @statusReturn=0   
    END 
    SELECT @statusReturn
    SELECT * FROM   #tempjobstatus
   
 END

【问题讨论】:

    标签: c# methods dataset parameter-passing


    【解决方案1】:

    也许我误解了这个问题,但您只需要更新您的界面以包含您想要传递的 int 然后更改您的 cmc.Parameters.Add。

    DataSet updateStatus(int jobid);

    cmd.Parameters.Add(new SqlParameter("@JobID",jobid));

    【讨论】:

    • 您理解正确,现在它按预期工作。
    猜你喜欢
    • 2015-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    相关资源
    最近更新 更多