如何通知我的 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 查询在插入数据库时​​跳过了重复的行?的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询生成器 WPF

如何在 WPF 中停止方法(通过按钮单击触发)

如何在 EF 上运行 SQL 查询?

互联网停机时如何使用Azure SQL数据库?

Android 上的 Azure 通知中心。如何发送给特定用户?

无法将 SQL Server LocalDB 用于我的 WPF 应用程序