簡體   English   中英

如何將int參數傳遞給C#中的DATASET實現的接口方法

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

下面是關於我實現的代碼的快速閱讀

在 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

也許我誤解了這個問題,但您只需要更新您的界面以包含您要傳遞的 int,然后更改您的 cmc.Parameters.Add。

DataSet updateStatus(int jobid);

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM