С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
3 / 3 / 0
Регистрация: 15.10.2018
Сообщений: 227

Как проверить наличие в каталоге нескольких файлов ?

20.07.2019, 15:24. Показов 1402. Ответов 10

Студворк — интернет-сервис помощи студентам
Добрый день .

Друзья , помогите решить такую задачку.

Мне необходимо программно определить наличие нескольких файлов в каталоге и на основе проверки выполнить запрос на объединение .
Для понимания наведу пример . Допустим есть такие файлы U1, U2, U3, U4 . Если файлы присутствуют то по запросу их содержимое необходимо объединить в файл R1. Но бывают случаи когда есть только файл U1, U3 а остальных нет , или всего лишь U1 ... Надеюсь смысл понятен .

Вообщем я так понимаю мне необходимо создать условие при котором выполняется тот или другой запрос. Но вот как создать такое условие я не знаю.

Привожу кусок кода который реализует добавление данных из U1 и U3 .

C#
1
2
3
4
5
6
7
8
con.Open();
               OleDbCommand com = new OleDbCommand();
               com.Connection = con;
               com.CommandText = "INSERT INTO R1 SELECT * FROM U1"; 
               com.ExecuteNonQuery();
               com.CommandText = "INSERT INTO R1 SELECT * FROM U3"; 
               com.ExecuteNonQuery();
               con.Close();
Очень прошу помочь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.07.2019, 15:24
Ответы с готовыми решениями:

Проверить наличие файлов, которые должны располагаться в том же каталоге, что и программа
Доброго времени суток, уважаемый форумчанин. Дело в том, что я уже третий час бьюсь над решением этой коварной проблемы... Гуглил,...

Проверить наличие в текущем каталоге файлов одинакового размера и вывести их имена, если такие файлы имеются
Здрасти. Задача: проверить наличие в текущем каталоге файлов одинакового размера. Если такие файлы есть – вывести их имена. get-childitem...

Как проверить наличие подкаталога в каталоге?
Пож-ста помогите разобраться с этим вопросом. Например есть каталог 'C:first'. Как определить есть ли в этом каталоге подкаталог с...

10
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
20.07.2019, 17:58
shadow_2, не совсем понимаю, как связаны файлы и добавление одной таблицы в другую ?
0
3 / 3 / 0
Регистрация: 15.10.2018
Сообщений: 227
20.07.2019, 19:10  [ТС]
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
не совсем понимаю, как связаны файлы и добавление одной таблицы в другую ?
Таблицы U1, U2, U3, U4 идентичные , разбежность только по одной из колонок , поэтому их необходимо склеить в новую таблицу R1 INSERT INTO R1 SELECT * FROM U1 Это и делает запрос.
Вся беда в том что , на некоторых машинах присутствуют все 4-е таблицы а на некоторых может быть три и даже две.
И если создать запрос который включает в себя все четыре таблицы то на компах где присутствует только две или вообще одна вылетает ошибка.
Поэтому и необходимо выполнять запросы по условию.

Объяснил как смог.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
20.07.2019, 19:16
shadow_2, то есть, файлы тут ни при чем ? Или из этих файлов заполняются сначала u1, u2 и ид, а потом надо из тех таблиц данные в r1 добавить?
0
3 / 3 / 0
Регистрация: 15.10.2018
Сообщений: 227
20.07.2019, 19:27  [ТС]
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
то есть, файлы тут ни при чем ? Или из этих файлов заполняются сначала u1, u2 и ид, а потом надо из тех таблиц данные в r1 добавить?
Это всё уже создается и добавляется.
Вопрос в другом . Как написать условие которое проверяет наличие этих таблиц на машине ?
типа такого.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
string file = @"D:\U1.DBF";
             string file_1 = @"D:\U3.DBF";
           if (System.IO.File.Exists(file) && (file_1))
           {
               con.Open();
               OleDbCommand com = new OleDbCommand();
               com.Connection = con;
               com.CommandText = "INSERT INTO R1 SELECT * FROM U1"; 
               com.ExecuteNonQuery();
               com.CommandText = "INSERT INTO R1 SELECT * FROM U3"; 
               com.ExecuteNonQuery();
               con.Close();
           }
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
20.07.2019, 19:35
shadow_2, не понятно, что значит - на некоторых машинах 2 таблицы, на некоторых 4? у них что, свои собственные базы?

Добавлено через 3 минуты
если на одной машине 2 файла, значит, там 2 таблицы?
0
3 / 3 / 0
Регистрация: 15.10.2018
Сообщений: 227
20.07.2019, 20:03  [ТС]
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
не понятно, что значит - на некоторых машинах 2 таблицы, на некоторых 4? у них что, свои собственные базы?
Да. Именно так . Поэтому и нужно чтобы отлавливались все исключения.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
20.07.2019, 21:04
shadow_2, на второй вопрос не ответил
0
3 / 3 / 0
Регистрация: 15.10.2018
Сообщений: 227
20.07.2019, 21:13  [ТС]
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
если на одной машине 2 файла, значит, там 2 таблицы?
Да.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
21.07.2019, 09:34
shadow_2, если количество и имена файлов на каждой машине совпадает с количеством и именами таблиц в базе, то алгоритм может быть такой:
циклом проходимся по папке, в которой находятся твои файлы .dbf, получаем их имена, и отправляем каждое имя в метод, который выполняет Insert в таблицу.
Если так необходимо использовать OleDb, то изменить SqlConnection и SqlCommand на нужные классы.
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
39
40
41
42
43
44
using System;
using System.Data.SqlClient;
using System.IO;
 
namespace ConsoleApp22
{
    class Program
    {
        public static void Main(string[] args)
        {
            foreach (string FilesToDirectory in Directory.GetFiles("test","*.dbf"))
            {
                Console.WriteLine($"Inserted to R1 from {Path.GetFileNameWithoutExtension(FilesToDirectory)} is {InsertToDB(Path.GetFileNameWithoutExtension(FilesToDirectory))}");
            }
        }
 
        public static bool InsertToDB (string TableNameFromInsert)
        {
            string ConnectionString = @"Data Source=DESKTOP-U87TKL3\SQLEXPRESS;Initial Catalog=test; Integrated Security=True";
 
            string SqlExpression = $"INSERT INTO R1 SELECT * FROM {TableNameFromInsert}";
 
            using (SqlConnection Connection = new SqlConnection(ConnectionString))
            {
                try
                {
                    Connection.Open();
 
                    SqlCommand command = new SqlCommand(SqlExpression, Connection);
 
                    command.ExecuteNonQuery();
 
                    Connection.Close();
 
                    return true;
                }
                catch
                {
                    return false;
                }               
            }            
        }
    }
}
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
22.07.2019, 11:30
T-SQL
1
2
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.Tables WHERE TABLE_NAME = 'U1')
INSERT INTO R1 SELECT * FROM U1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.07.2019, 11:30
Помогаю со студенческими работами здесь

Как проверить список файлов на наличие ?
Для каждого как то запарно писать :-! #include "stdafx.h" #include <fstream> #include <iostream> #include <windows.h> ...

Проверить наличие файла в каталоге, с определенной периодичностью, и установить в виду отсутствия
Доброго времени всем... Есть файл в одной папке на диске "D". Мне нужно реализовать такую возможность, что бы каким то способом...

Как узнать сколько файлов в каталоге, и проверить, существует такой файл, или нет?
подскажите пожалуйста, как узнать сколько файлов в коталоге , и как проверить существует такой файл, или нет?

Пакетный файл, который будет проверять наличие в указанном в качестве первого параметра каталоге файлов
Требуется написать пакетный файл, который будет проверять наличие в указанном в качестве первого параметра каталоге файлов. Если файлы там...

Проверить существование в текущем каталоге файлов, перечисленных в командной строке.
Народ, помогите пожалуйста! Надо написать скрипт по заданию: Проверить существование в текущем каталоге файлов, перечисленных в командной...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru