gpt4 book ai didi

c# - 使用 2 个存储过程更新现有记录并仅插入 Datagridview 的新记录

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:13 25 4
gpt4 key购买 nike

我想使用 2 个存储过程(插入、更新)同时更新现有记录并仅插入 DataGridView 的新记录。

但我不知道如何确定哪一行是新插入的行,哪一行是现有行。

如果该行存在,我想调用存储过程Update,否则我想调用Insert

这是两个过程:

alter PROCEDURE [dbo].[proc_TBL_PROC_PMS_Insert]
@INDEXNO nvarchar(50),
@_PROCESS_INST_NO nvarchar(50),
@_Order_No nvarchar(50),
@_GOODS_CD nvarchar(50),
@_GOODS_NAME nvarchar(50),
@_LINE_NO int,
@_UNIT nvarchar(50),
@_QTY int
AS
INSERT INTO [TBL_PROC_PMS]([INDEXNO],[_PROCESS_INST_NO],[_Order_No],[_LINE_NO],[_GOODS_CD],[_GOODS_NAME],[_UNIT],[_QTY])
VALUES(@INDEXNO,@_PROCESS_INST_NO,@_Order_No,@_LINE_NO,@_GOODS_CD,@_GOODS_NAME,@_UNIT,@_QTY)

ALTER PROCEDURE [dbo].[proc_TBL_PROC_PMS_Update]
@_PROCESS_INST_NO nvarchar(50),
@_GOODS_CD nvarchar(50),
@_GOODS_NAME nvarchar(50),
@_LINE_NO int,
@_UNIT nvarchar(50),
@_QTY int
AS
UPDATE [ENVNDIVDB].[dbo].[TBL_PROC_PMS] SET _GOODS_CD=@_GOODS_CD,_GOODS_NAME=@_GOODS_NAME, _UNIT = @_UNIT,_QTY=@_QTY
WHERE _PROCESS_INST_NO=@_PROCESS_INST_NO AND _LINE_NO = @_LINE_NO

这是按钮保存点击

var cmd2 = new SqlCommand("proc_TBL_PROC_PMS_Update", sqlConn);
cmd2.CommandType = CommandType.StoredProcedure;

foreach (DataGridViewRow item in grdMaterial.Rows)
{
if (!item.IsNewRow)
{
cmd2.Parameters.Clear();
int rowindex = item.Index;
cmd2.Parameters.AddWithValue("@_PROCESS_INST_NO", txtInstNo.Text);

cmd2.Parameters.AddWithValue("@_LINE_NO", rowindex);
cmd2.Parameters.AddWithValue("@_GOODS_CD", item.Cells[4].Value);
cmd2.Parameters.AddWithValue("@_GOODS_NAME", item.Cells[5].Value);
cmd2.Parameters.AddWithValue("@_UNIT", item.Cells[6].Value);
cmd2.Parameters.AddWithValue("@_QTY", item.Cells[7].Value);
cmd2.ExecuteNonQuery();
}
}

最佳答案

您应该有一个包含行 ID 的列(可以隐藏 - .visible = False),其中新插入的行将没有任何内容/DbNull(如果可见,请将此 ID 列设置为只读)。将它们插入数据库后,更新网格,这些行将有一个 ID。这样您就可以安全地识别现有行和新行。

关于c# - 使用 2 个存储过程更新现有记录并仅插入 Datagridview 的新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46558537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com