如何在 C# 中将 int 参数传递给 DATASET 实现的接口方法

How to pass int parameter to DATASET implemented interface method in C#

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

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

DataSet updateStatus();

Return 界面在 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

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

DataSet updateStatus(int jobid);

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