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

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

20.07.2019, 15:24. Показов 1423. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru