C#: SQL reader.read () определяет, прервано ли соединение - PullRequest
1 голос
/ 11 марта 2020

У меня есть таблица данных, которая показывает данные текстового файла. Эта таблица данных будет затем использоваться для обновления строки / строк, которые соответствуют идентификатору в базе данных с идентификатором внутри текста. Сценарий будет выглядеть так:

Текстовый файл:

[TxtId] [имя] [адрес]

1 Джон Плейс123 2 Доу место456 3 jes place789

Sql таблица:

[Id] [TxtId] [items]

1 1 сумка 2 1 карандаш 3 1 ручка 4 2 bag

Я хочу знать, что в этой строке строки, если id из текстового файла совпадает с txtid в таблице. Он выполнит обновление, в то же время он создаст файл журнала в каждой строке строки в считывателе, чтобы увидеть, действительно ли обновляются данные, затем он увеличит счетчик в счетчике обновлений, учитывая, что все совпадения этого Идентификатор обновляется в базе данных, в противном случае количество ошибок будет увеличено. Теперь моя проблема в том, как я узнаю, что while (reader.read ()) читает последнюю строку, чтобы я знал, что id 1 в текстовом файле полностью обновлен до базы данных

1 Ответ

0 голосов
/ 11 марта 2020

Ваш процесс является стандартным процессом ETL. ETL расшифровывается как Extract, Transform, Load - это то, что вы делаете здесь. Существует много информации об ETL и о том, как их делать на inte rnet, я рекомендую вам прочитать его, если вы можете.

Для вашего случая стандартный процесс будет иметь специальный Таблица называется «промежуточной таблицей», куда вы загружаете новые данные в качестве первого шага. Затем вы можете использовать эту таблицу в своей БД для сравнения и обновления. Бизнес-правила для обновления «производственной таблицы» из «промежуточной таблицы» относительно просты по сравнению с написанием C# программы, которая читает и записывает из двух разных мест (текстовый файл и таблица БД), когда она пытается выполнить бизнес-правила.

Ваши бизнес-правила мне не понятны на 100%, но, похоже, если бы у вас была промежуточная таблица, их можно было бы выполнить с помощью одного запроса UPDATE в SQL (может быть, два, если вам нужно сделать несколько удаляет тоже.) Я думаю, вы уже можете видеть, что один запрос намного проще, чем logi c, который вы пытаетесь выяснить, чтобы он работал без промежуточной таблицы.

Так что это мой рекомендуемый подход здесь - составьте промежуточную таблицу, а затем сравните и обновите ее, используя эту таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...