在Ado.net C中动态构建Where子句#

cho*_*bo2 5 c# sql-server ado.net

我将在给定时间内收集大约1000条记录,我必须确定它们是现有记录还是新记录.

如果它们存在,我必须更新记录,如果是新的,则只需插入它们.我不知道他们中的任何一个是否存在,或者它们是否都存在.

我认为最好对数据库进行一次查询并尝试查找数据库中是否存在任何查询并将其存储在内存中并检查该内存中的集合并检查它.

最初我被告知我1场将足以确定唯一性.所以我想我可以在数据库中对1个字段做一个大的子句,但现在我发现情况并非如此,我需要使用3个字段来确定记录是存在还是现在.

这基本上是一个和条款

select * from where columnA = "1" and ColumnB = "2" and ColumnC = "3"
Run Code Online (Sandbox Code Playgroud)

我怎样才能在C#ado.net中正确地理解这一点?

我猜我需要有一些超级where子句?

select * from where (columnA = "1" and ColumnB = "2" and ColumnC = "3") or  (columnA = "4" and ColumnB = "5" and ColumnC = "6") or [....998 more conditional clauses)
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我愿意接受更好的想法.我仍然认为一次性完成它比做1000次单独查询更好.

Far*_*naz 6

我只能帮助您为您的请求编写查询

        var recordCount = 1000;
        var query = "SELECT * FROM TableName WHERE";
        for (var i = 1; i < recordCount - 2; i += 3)
        {
            query += " (columnA = " + i + " and ColumnB = " + (i + 1) + " and ColumnC = " + (i + 2) + ") or ";
        }
Run Code Online (Sandbox Code Playgroud)