如何在 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));
下面是关于我实现的代码的快速阅读
在 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));