【发布时间】:2020-03-20 18:25:23
【问题描述】:
首先,我对这个主题进行了大量研究,但不幸的是我没有找到适合我的方法。 这是我的存储过程
USE [SIM]
GO
Create Proc [dbo].[AddPaymentTracking]
@NPaymentRequest nvarchar(50),
@DatePayment date,
@id int out
AS
INSERT INTO [dbo].[PaymentTracking]
([NPaymentRequest]
,[DatePayment])
VALUES
(@NPaymentRequest,
@DatePayment)
Set @id=@@IDENTITY
这是我的 c# 类代码
public async Task AddPaymentTracking(string NPaymentRequest, DateTime DatePayment)
{
DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
await Task.Run(() => DAL.Open()).ConfigureAwait(false);
SqlParameter[] param = new SqlParameter[3];
param[0] = new SqlParameter("@NPaymentRequest", SqlDbType.NVarChar, 50)
{
Value = NPaymentRequest
};
param[1] = new SqlParameter("@DatePayment", SqlDbType.Date)
{
Value = DatePayment
};
param[2] = new SqlParameter("@id", SqlDbType.Int);
param[2].Direction = ParameterDirection.Output;
await Task.Run(() => DAL.ExcuteCommande("AddPaymentTracking", param)).ConfigureAwait(false);
DAL.Close();
}
这是我的 c# 表单代码
private async void btnSave_Click(object sender, EventArgs e)
{
await supply.AddPaymentTracking(txtNPaymentRequest.Text, Convert.ToDateTime(txtDatePayment.EditValue, CultureInfo.CurrentCulture)).ConfigureAwait(true);
//int output = Get output Parameter
}
我该怎么做?
提前致谢
【问题讨论】:
-
您可以在 AddPaymentTracking 方法中获取 out 参数值,但不能在 btnSave_Click 中获取,除非您还从 AddPaymentTracking 方法中将其作为输出参数公开。在
DAL.ExcuteCommande之后尝试:var outVal = param[2].Value.. 在您的AddPaymentTracking方法中添加一个 out(或 ref)参数,并在返回之前将此值分配给它。 -
你说,“我对这个主题做了很多研究,但不幸的是我没有找到适合我的东西”,但是当我在谷歌上搜索你的主题标题时,其中一个第一个结果是:Example on how to use output parameter in stored procedure in C#。那对你不起作用吗?我没有看到您的代码试图访问 out 参数值的位置。
-
@RufusL 不是。事件处理程序
btnSave_Click中有注释://int output = Get output Parameter -
@OguzOzgul 非常感谢你能不能把它写在答案部分,这样我就可以回答我的问题了
标签: c# sql-server winforms