Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Lamak
6 / 6 / 1
Регистрация: 17.08.2012
Сообщений: 75

Проверка на существование строки, запись в лог-файл

25.09.2012, 11:55. Показов 2243. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Имеется файл excel и база данных, перебрасываю из файла в таблицу базы.
Делаю запись в лог-файл строк, которые были добавлены.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
List<structura_DB> resDB = c1.FromDbase();
 
 
                //цикл: пробегаем по строкам excel и таблицы БД. Если строка есть - update, 
                //если отсутсвует - insert 
                //Здесь строки из Excel c SiteID, которых нет в базе (для них нужен INSERT)
                var diff_values = resEx.Where(x => !resDB.Any(x1 => x1.SiteID == x.SiteID)).Select(x => new { x.SiteName, x.SiteID, x.DistrictID, x.DistrictName, x.ShchID, x.ShchName });
                //Здесь строки из Excel с SiteID, которые уже есть в базе (для них нужен UPDATE)
                var same_values = resEx.Where(x => resDB.Any(x1 => x1.SiteID == x.SiteID)).Select(x => new { x.SiteName, x.SiteID, x.DistrictID, x.DistrictName, x.ShchID, x.ShchName });
 
                string fileName = "log.txt";
                FileStream fout = new FileStream(fileName, FileMode.Append);
                StreamWriter fstr_out = new StreamWriter(fout, Encoding.UTF8);
              
 
                fstr_out.WriteLine();
                fstr_out.WriteLine(DateTime.Now + " Добавленные строки:");
               
                //Выведем строки с теми SiteID которых нет в базе
                foreach (var value in diff_values)
                {
                    //Здесь запрос на добавление этих строк
                    SqlConnection sqlConn = new SqlConnection("user id=sa;" +
                                              "password=1234;server=127.0.0.1;" +
                                              "Trusted_Connection=yes;" +
                                              "database=MainDB; " +
                                              "connection timeout=5");
 
                    sqlConn.Open();
                    SqlCommand sqlCmd = new SqlCommand();
                    sqlCmd.Connection = sqlConn;
                    sqlCmd.CommandText = string.Format("IF NOT EXISTS (SELECT * FROM LOC_Sites_tmp WHERE Site_ID = '{2}') INSERT INTO LOC_Sites_tmp (SHCH_ID, District_ID, Site_ID, Site_Name, Site_qName) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}')", value.ShchID, value.DistrictID, value.SiteID, value.SiteName, value.SiteName.ToLower());
 
                    //и выводим то, что добавили
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4}", value.SiteName, value.SiteID, value.DistrictID, value.ShchID, value.ShchName));
                    fstr_out.WriteLine(value.SiteName + "   " + value.SiteID + "   " + value.DistrictID + "   " + value.ShchID +  "   " + value.ShchName);
                    sqlConn.Close();
                }
Проблема в том, что строка с содержимым DateTime.Now + " Добавленные строки:" пишется даже в том случае, нет новых строк, которые переносились бы в БД при выполнении запроса.
Как сделать такую проверку, чтобы эта ненужная строка не записывалась в лог-файл? А записывалась только в том случае, когда есть, что добавлять. Что-то с SqlDataReader надо делать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2012, 11:55
Ответы с готовыми решениями:

Реестр. Запись и проверка на существование ключа
Привет. Да, тема заезжена, но ситуация нестандартная. Прописываю в автозагрузку: Reg-&gt;RootKey = HKEY_LOCAL_MACHINE; ...

Проверка на существование строки
Здравствуйте. Подскажите пожалуйста, как сделать следующее: На одном листе (ЛИСТ1) вбиваются строки с №-ми п/п, а на другом листе (ЛИСТ2)...

Проверка на существование/замена строки
&lt;? $file_list=glob(&quot;*.txt&quot;); for ($i=0; $i&lt;count($file_list);$i++){ if ($file_list==$filename){ $str1=&quot;is found!&quot;; } if...

3
82 / 82 / 24
Регистрация: 30.09.2011
Сообщений: 404
Записей в блоге: 6
25.09.2012, 12:11
Как вариант, делать проверку:
C#
1
2
3
4
5
if (diff_values.Count > 0)
{
    fstr_out.WriteLine();
    fstr_out.WriteLine(DateTime.Now + " Добавленные строки:");
}
1
 Аватар для Lamak
6 / 6 / 1
Регистрация: 17.08.2012
Сообщений: 75
25.09.2012, 12:13  [ТС]
Пробовал, говорит Operator '>' cannot be applied to operands of type 'method group' and 'int'
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
25.09.2012, 12:15
Преобразуйте в список.
C#
1
var diff_values = resEx.Where(/**/).ToList();
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.09.2012, 12:15
Помогаю со студенческими работами здесь

Проверка на существование строки в TStringList
Доброго вечера, ребята подскажите как проверить существует ли 7 элемент в TStringList ? Без цикла... { #define SS...

Проверка в базе данных на существование строки
Вот мой php код &lt;? require_once '../config.php'; $passw = $_GET; $query = mysqli_query($mysqli, &quot;SELECT COUNT(*) FROM...

Запись ошибок пхп в лог файл
Здравствуйте, в корне хоста имею файлы индексный, .htaccess, error.log. В файле .htaccess имеются строки #требуется для записи в лог...

Запись запущенных программ в лог файл.
Знаю что лог файлы, хранящиеся в C:\WINDOWS\Prefetch записывают все запущенные программы и момент их запуска. Скажите, можно ли как-то...

Запись в текстовый лог-файл по сети
Есть скрипт Sub Remote(srv) On Error Resume Next Dim Controller, RemoteScript Set Controller =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru