如何通知我的 WPF 应用程序我的 SQL 查询在插入数据库时跳过了重复的行?
Posted
技术标签:
【中文标题】如何通知我的 WPF 应用程序我的 SQL 查询在插入数据库时跳过了重复的行?【英文标题】:How to notify my WPF application that my SQL query skipped duplicate rows when inserting to database? 【发布时间】:2021-12-07 01:49:30 【问题描述】:在执行INSERT
时,我正在使用WHERE NOT EXISTS
SQL 语句过滤重复项。
如何通知我的 WPF 应用程序用户已跳过重复项?
【问题讨论】:
好吧,您的 WPF 应用程序知道您发送了多少要存储的数据 - 因此您可以检查实际保存了多少,以及是否存在差异在那里,一些(或全部)被跳过了......我敢打赌,任何使用 SQL 的 RDBMS 都可以以某种方式返回插入的实际行数...... 通过使用 SQL 选择/计算重复的数量。 【参考方案1】:我最终使用了 SQL 变量 @@ROWCOUNT
。
将其添加到我的存储过程中:
CREATE PROCEDURE [dbo].[p_procedure_name]
@rowCount int output
AS
BEGIN TRANSACTION
SET NOCOUNT ON
INSERT INTO [dbo].[table_name] (/* column list */)
SELECT /* columns */
FROM [dbo].[another_table_name]
SET @rowCount = @@ROWCOUNT
RETURN
COMMIT TRANSACTION
然后,在我的 C# 代码中:
SqlParameter param = new();
param.SqlDbType = SqlDbType.Int;
param.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param);
dr = cmd.ExecuteReader();
dr.Close();
int rows = cmd.Parameters["@rowCount"].Value.ToString();
【讨论】:
以上是关于如何通知我的 WPF 应用程序我的 SQL 查询在插入数据库时跳过了重复的行?的主要内容,如果未能解决你的问题,请参考以下文章