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

Загрузка файла по ссылке взятой из MySQL используя checkedListBox

16.02.2016, 12:26. Показов 1073. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как загрузить файлы из выбранного списка checkedListBox?
Сделал некоторый не стандартный вариант, но он загружает последний выбранный элемент из списка.
Скорее всего нужно парсить или как то так, убил несколько часов, так и не дошел до завершения идеи.

На всякий случай объясню свой алгоритм:
Кликните здесь для просмотра всего текста
comboBox1 - каталог (список храниться в таблице spisok_catalog - базы данных)
в таблице spisok_catalog храниться два поля, название категорий и название таблицы базы данных категорий.
Следовательно первый запрос к таблице spisok_catalog, ответ приходит в список comboBox1,
при выборе нужной категории делается запрос, например к category_1, ответ приходит полным списком в checkedListBox, в виде имени, при выборе из списка checkedListBox`а, делается последний запрос с получением ссылки.

Пожалуйста, предложите свои идеи, так как я всегда готов упростить решение!


Скажу сразу, 3 запроса к базе и одна кнопка загрузки, да код выглядит извращенным, упростить не вышло, не хватает знаний.

Накидал наглядный пример
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsTestVivod3stroki
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
 
        // Кнопка загрузки
        private void button1_Click(object sender, EventArgs e)
        {
            string link = label1.Text; // ссылка
            string downloadFileName = Path.GetFileName(link); // имя файла
            WebClient webClient = new WebClient();
            webClient.DownloadFileAsync(new Uri(link), @"C:" + downloadFileName); // путь загрузки
            webClient.Dispose();
        }
 
        // Подключение к базе данных и получение данных при запуске формы
        private void Form2_Load(object sender, EventArgs e)
        {
            try
            {
                string constring = "datasource=localhost;port=3306;username=USER;password=PASS";
                string Query = "select * from h92817_base.catalog";
                MySqlConnection conDataBase = new MySqlConnection(constring);
                MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
                MySqlDataReader myReader;
 
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
                while (myReader.Read())
                {
                    string name = myReader.GetString("name");
                    comboBox1.Items.Add(name);
 
                    string link = myReader.GetString("link");
                    label1.Text = link;
                }
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                string constring = "datasource=localhost;port=3306;username=USER;password=PASS";
                string Query = "select * from h92817_base.catalog where name='" + comboBox1.Text + "'";
                MySqlConnection conDataBase = new MySqlConnection(constring);
                MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
                MySqlDataReader myReader;
 
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
                while (myReader.Read())
                {
                    string name = myReader.GetString("name");
                    checkedListBox1.Items.Add(name);
 
                    string link = myReader.GetString("link");
                    label1.Text = link;
                }
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
 
 
        private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            try
            {
                string constring = "datasource=localhost;port=3306;username=USER;password=PASS";
                string Query = "select * from h92817_base.catalog where name='" + checkedListBox1.Text + "'";
                MySqlConnection conDataBase = new MySqlConnection(constring);
                MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
                MySqlDataReader myReader;
 
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
                while (myReader.Read())
                {
                    string link = myReader.GetString("link");
                    label1.Text = link;
                }
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
        }
 
    }
 
}

Не по теме:

Вопрос не по теме, не могли бы объяснить как упростить подключения к базе? в наглядном примере три подключения в коде, а в исходнике так почти в каждой строке, так как разные запросы. Может есть какой то выгодный вариант запроса к базе?

0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2016, 12:26
Ответы с готовыми решениями:

Загрузка одноименного файла в ссылке
у меня стоит запрет в htaccess на использование файлов кроме индекса <IfModule mod_rewrite.c> RewriteEngine On RewriteCond...

Автоматическая загрузка файла при переходе по ссылке
Здравствуйте. Интересует, как сделать так, чтобы при переходе по ссылке вида: http://site.ru/download.php?file=GoogleChrome То...

Загрузка текстового файла в MySQL
Добрый день. есть текстовый файл "test.txt" "Дата учета";"Документ No";"Счет";"Сумма";"Источник No";"Код...

8
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
16.02.2016, 13:58
Цитата Сообщение от therud Посмотреть сообщение
но он загружает последний выбранный элемент из списка.
потому что в коде написано
C#
1
string Query = "select * from h92817_base.catalog where name='" + checkedListBox1.Text + "'";
в checkedListBox1.Text содержится текст последнего выбранного элемента. Нужно пройти циклом по выбранным элементам
Цитата Сообщение от therud Посмотреть сообщение
упростить не вышло, не хватает знаний.
просто нужно написать класс(как минимум один), который будет работать с БД, и при необходимости вызывать его. Тогда повторяющегося кода не будет
1
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
16.02.2016, 15:53  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
Нужно пройти циклом по выбранным элементам
Такой пойдет?
C#
1
2
3
4
5
6
7
8
foreach (var item in checkedListBox1.CheckedItems)
{
   string link = (item as Link).Path; // ссылка
   string downloadFileName = Path.GetFileName(link); // имя файла
   WebClient webClient = new WebClient();
   webClient.DownloadFileAsync(new Uri(link),  @"C:\Paplka" + downloadFileName); // путь загрузки
   webClient.Dispose();
}
Не могу понять что с классом Link делать?

C#
1
2
3
4
class Link
{
   public string Path { get; set; }
}
Цитата Сообщение от nio Посмотреть сообщение
просто нужно написать класс
Как раз изучаю сейчас классы, буду пробовать через класс.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
16.02.2016, 16:06
Цитата Сообщение от therud Посмотреть сообщение
Не могу понять что с классом Link делать?
не вижу смысла его вообще использовать, он хранит только одну строку, так что обычного string вполне хватило бы
0
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
16.02.2016, 16:09  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
обычного string вполне хватило бы
Помогите оформить, не пойму вашу идею..
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
16.02.2016, 16:22
Цитата Сообщение от therud Посмотреть сообщение
Такой пойдет?
мне не понравилось, что WebClient создаётся и уничтожается в каждой итерации цикла. Эти операции нужно вынести за пределы цикла, это увеличит быстродействие

Добавлено через 6 минут
Цитата Сообщение от therud Посмотреть сообщение
не пойму вашу идею..
вместо
C#
1
2
   string link = (item as Link).Path; // ссылка
   string downloadFileName = Path.GetFileName(link); // имя файла
можно написать
C#
1
   string downloadFileName = Path.GetFileName(item.ToString()); // имя файла
только checkedListBox1 изначально должен быть заполнен строковыми значениями, а не экземплярами класса Link

Добавлено через 2 минуты
а если в checkedListBox1 изначально только имена файлов с расширениями, а не пути, то использовать GetFileName тоже нет смысла и код упрощается до
C#
1
  string downloadFileName = item.ToString(); // имя файла
1
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
16.02.2016, 16:23  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
WebClient создаётся и уничтожается в каждой итерации цикла
Действительно, а как это возможно сделать? ведь там переменные
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
16.02.2016, 16:39
Цитата Сообщение от therud Посмотреть сообщение
а как это возможно сделать? ведь там переменные
загрузка остаётся в цикле, объявление выносится за пределы
0
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
16.02.2016, 23:49  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
загрузка остаётся в цикле, объявление выносится за пределы
Не правильно вас понял сначала, стал выносить string.. потом додумался о чем речь

C#
1
WebClient webClient = new WebClient();

Все же я не могу понять, как в URL вывести ссылки чекбокса?
C#
1
2
3
4
5
6
7
foreach (string item in checkedListBoxSQL.CheckedItems)
{
WebClient webClient = new WebClient();
string downloadFileName = item.ToString(); // имя файла
webClient.DownloadFileAsync(new Uri(ТУТ ССЫЛКА ИЗ checkedListBoxSQL.CheckedItems), @"C:\Users\pasha\Desktop" + downloadFileName); // путь загрузки
webClient.Dispose();
}
Добавлено через 37 минут
Цитата Сообщение от nio Посмотреть сообщение
а если в checkedListBox1 изначально только имена файлов с расширениями, а не пути, то использовать GetFileName тоже нет смысла и код упрощается до
C#
1
string downloadFileName = item.ToString(); // имя файла
А как же формат? если так делать, то загрузочный файл переименовывается в имя из checkbox

Добавлено через 3 часа 53 минуты
Я переформулировал вопрос, тему можно в архив, создам новую
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2016, 23:49
Помогаю со студенческими работами здесь

Как работает загрузка файла в MySQL?
Мне необходимо поместить файлик *.doc в MySql а потом вітянуть его ? В каком виде он там храниться и как сним работать ? работаю на ПХП...

Загрузка xml файла в mysql на php
Как можно реализовать загрузку данных из xml файла в mysql с помощью интерфейса на php?

Загрузка файла с использованием php+mysql
Тут больше теоретический вопрос. Планирую сделать загрузку файла, этот файл должен быть как то привязан к id строки в таблице базы!...

Загрузка из xls-файла, используя COM-соединение
Добрый день. Написал обработку для загрузки данных из xls документа в УТ11. На моем компьютере она работает. Но на сервере клиента...

Загрузка текстового файла на FTP используя AFNetworking
Всем привет. Я пытаюсь разобраться с библиотекой AFNetworking, а именно с вызгрукой файла на ФТП, загрузку вроде освоил, а вот с выгрузкой...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru