首先,我对此主题进行了大量研究,但不幸的是,我没有找到适合我的方法。 这是我的存储过程
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
}
我该怎么办?
预先感谢
答案 0 :(得分:1)
除非可以将AddPaymentTracking
方法中的out参数值作为输出(或引用)参数公开,否则您可以在btnSave_Click
方法中获取out参数值,而不能在AddPaymentTracking
中获取。 >
public async Task AddPaymentTracking(string NPaymentRequest, DateTime DatePayment, out int newRecordId)
{
. . .
. . .
await Task.Run(() => DAL.ExcuteCommande("AddPaymentTracking", param)).ConfigureAwait(false);
newRecordId = (int)param[2].Value;
DAL.Close();
}
这是使用新签名调用方法的方式:
private async void btnSave_Click(object sender, EventArgs e)
{
int output;
await supply.AddPaymentTracking
(
txtNPaymentRequest.Text,
Convert.ToDateTime(txtDatePayment.EditValue, CultureInfo.CurrentCulture),
out output
).ConfigureAwait(true);
. . .
. . .
}