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

Передать переменную в класс

20.02.2016, 00:46. Показов 4354. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как передать переменную в класс, таким образом "select * from h92817_base." + Peremen.PeremenCatalogName + "" ?
C#
1
2
3
//Как передать переменную в класс, таким образом "select * from h92817_base." + Peremen.PeremenCatalogName + "" ?
// Или + comboBox1.Text +
var command = new MySqlCommand("select name, link from h92817_base.catalog_1;", connection);
Вот весь класс:
Кликните здесь для просмотра всего текста
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
    class Link
    {
        public string PeremenCatalogName { get; set; }
        public string Path { get; set; }
        public string Name { get; set; }
 
        public override string ToString()
        {
            return Name;
        }
 
    }
 
    class Links : List<Link>
    {
        public static Links Load(string url)
        {
            //создаем Links
            var res = new Links();
            //подключаеся к БД
            using (var connection = new MySqlConnection("datasource=host;port=3306;username=USER;password=PASS"))
            {
                //создаем запрос к БД
                // Как передать переменную в класс, таким образом "select * from h92817_base." + Peremen.PeremenCatalogName + "" ?
                // Или + comboBox1.Text +
                var command = new MySqlCommand("select name, link from h92817_base.catalog_1;", connection);
                //открываем коннект к БД
                connection.Open();
 
                //Заполняем коллекцию res данные из базы данных
                using (var reader = command.ExecuteReader())
                    while (reader.Read())
                        res.Add(new Link { Name = reader.GetString(0), Path = reader.GetString(1) });
                connection.Close();
            }
            return res;
        }
    }


На всякий случай весь код выглядит так:
Кликните здесь для просмотра всего текста
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        // Класс
        Link Peremen = new Link();
 
        public Form1()
        {
            InitializeComponent();
        }
 
        // 1. Запрос к таблице spisok_catalog и ответ в comboBox1.Items.Add
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                string constring = "datasource=host;port=3306;username=USER;password=PASS";
                string Query = "select * from h92817_base.spisok_catalog";
                MySqlConnection conDataBase = new MySqlConnection(constring);
                MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
                MySqlDataReader myReader;
 
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
                while (myReader.Read())
                {
                    // Переменная запроса поля Name в comboBox1.Items.Add
                    string Name = myReader.GetString("Name");
                    comboBox1.Items.Add(Name);
                }
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            // 2. Запрос к таблице spisok_catalog по имени из comboBox1.Text и ответ в Peremen.PeremenCatalogName
            try
            {
                string constring = "datasource=host;port=3306;username=USER;password=PASS";
                string Query = "select * from h92817_base.spisok_catalog where GameName='" + comboBox1.Text + "'";
                MySqlConnection conDataBase = new MySqlConnection(constring);
                MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
                MySqlDataReader myReader;
 
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
                while (myReader.Read())
                {
                    // Переменная запроса поля CatalogName в свойство Peremen.PeremenCatalogName
                    string CatalogName = myReader.GetString("CatalogName");
                    Peremen.PeremenCatalogName = CatalogName;
                }
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
 
            // запрос к выбранному каталогу из свойства Peremen.PeremenCatalogName и ответ в checkedListBox1.Items.AddRange
            try
            {             
                string constring = "datasource=host;port=3306;username=USER;password=PASS";
                string Query = "select * from h92817_base." + Peremen.PeremenCatalogName + "";
                MySqlConnection conDataBase = new MySqlConnection(constring);
                MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
                MySqlDataReader myReader;
 
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
                while (myReader.Read())
                {
                    // Переменная с свойством Peremen.PeremenCatalogName в checkedListBox1.Items.AddRange
                    checkedListBox1.Items.Clear();
                    checkedListBox1.Items.AddRange(Links.Load("").ToArray());
                }
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
 
        // Выбор папки
        private void btnObzor_Click(object sender, EventArgs e)
        {
            DialogResult result = folderBrowserDialog1.ShowDialog();
            textBox1.Text = folderBrowserDialog1.SelectedPath;
        }
 
        // Загрузка файлов
        private void btnLoad_Click(object sender, EventArgs e)
        {
            foreach (var item in checkedListBox1.CheckedItems)
            {
                var webClient = new WebClient();
 
                // ссылка
                string link = (item as Link).Path;
 
                // имя файла
                string downloadFileName = Path.GetFileName(link);
 
                //загрузка
                webClient.DownloadFileAsync(new Uri(link), folderBrowserDialog1.SelectedPath + "" + downloadFileName);
            }
        }
    }
 
    class Link
    {
        public string PeremenCatalogName { get; set; }
        public string Path { get; set; }
        public string Name { get; set; }
 
        public override string ToString()
        {
            return Name;
        }
 
    }
 
    class Links : List<Link>
    {
        public static Links Load(string url)
        {
            //создаем Links
            var res = new Links();
            //подключаеся к БД
            using (var connection = new MySqlConnection("datasource=host;port=3306;username=USER;password=PASS"))
            {
                //создаем запрос к БД
                // Как передать переменную в класс, таким образом "select * from h92817_base." + Peremen.PeremenCatalogName + "" ?
                // Или + comboBox1.Text +
                var command = new MySqlCommand("select name, link from h92817_base.catalog_1;", connection);
                //открываем коннект к БД
                connection.Open();
 
                //Заполняем коллекцию res данные из базы данных
                using (var reader = command.ExecuteReader())
                    while (reader.Read())
                        res.Add(new Link { Name = reader.GetString(0), Path = reader.GetString(1) });
                connection.Close();
            }
            return res;
        }
    }
}
Вложения
Тип файла: zip WindowsFormsApplication1.zip (232.2 Кб, 2 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.02.2016, 00:46
Ответы с готовыми решениями:

Передать переменную в другую форму
Подскажите! Всё излазил! Не могу разобраться. Создал две формы. На первой есть переменные a, b, c, d. Как со второй формы задать эти...

Передать переменную на другую форму
Передавал значение из одной формы на вторую так На первой форме: Form2 f2 = new Form2(); f2.test(19); f2.ShowDialog(); На второй:...

Передать переменную из класса в класс
Добрый день, следующая задача передать переменную из класса А в класс В class_a.h #ifndef CLASS_A_H #define CLASS_A_H ...

9
35 / 25 / 13
Регистрация: 12.02.2011
Сообщений: 178
Записей в блоге: 1
20.02.2016, 02:48
Я не совсем понял вопрос
C#
1
2
3
4
5
6
7
8
9
class Link
    {
        public static string VotEtaPeremennaya;
    }
 
void gde_vipolnyaesh_peredachu()
        { Link.VotEtaPeremennaya =
"select * from h92817_base." + Peremen.PeremenCatalogName + "";
}
0
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
20.02.2016, 04:12  [ТС]
logo424, не совсем понимаю как правильно объяснить, попробую по другому.
тут заношу в переменную Peremen.PeremenCatalogName свойства
Кликните здесь для просмотра всего текста
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
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                string constring = "datasource=host;port=3306;username=USER;password=PASS";
                string Query = "select * from h92817_base.spisok_catalog where GameName='" + comboBox1.Text + "'";
                MySqlConnection conDataBase = new MySqlConnection(constring);
                MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase);
                MySqlDataReader myReader;
 
                conDataBase.Open();
                myReader = cmdDataBase.ExecuteReader();
                while (myReader.Read())
                {
                    string CatalogName = myReader.GetString("CatalogName");
                    // Заношу в Peremen.PeremenCatalogName свойства ответ переменной из CatalogName
                    Peremen.PeremenCatalogName = CatalogName;
                }
                conDataBase.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

а как теперь передать Peremen.PeremenCatalogName в
C#
1
var command = new MySqlCommand("select name, link from h92817_base.catalog_1;", connection);
наподобие такого вида?
C#
1
var command = new MySqlCommand("select name, link from h92817_base." + Peremen.PeremenCatalogName + ";", connection);
Не получается передать никак, так как строка находиться в классах:
Кликните здесь для просмотра всего текста
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
    class Link
    {
        public string PeremenCatalogName { get; set; }
        public string Path { get; set; }
        public string Name { get; set; }
 
        public override string ToString()
        {
            return Name;
        }
 
    }
 
    class Links : List<Link>
    {
        public static Links Load(string url)
        {
            //создаем Links
            var res = new Links();
            //подключаеся к БД
            using (var connection = new MySqlConnection("datasource=host;port=3306;username=USER;password=PASS"))
            {
                //создаем запрос к БД
                // Как передать переменную в класс, таким образом "select * from h92817_base." + Peremen.PeremenCatalogName + "" ?
                // Или + comboBox1.Text +
                var command = new MySqlCommand("select name, link from h92817_base.catalog_1;", connection);
                //открываем коннект к БД
                connection.Open();
 
                //Заполняем коллекцию res данные из базы данных
                using (var reader = command.ExecuteReader())
                    while (reader.Read())
                        res.Add(new Link { Name = reader.GetString(0), Path = reader.GetString(1) });
                connection.Close();
            }
            return res;
        }
    }


Добавлено через 28 минут
P.S. своими словами, в Peremen.PeremenCatalogName находиться значение которое я занес из этих строк:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    string CatalogName = reader.GetString("CatalogName");
    Peremen.PeremenCatalogName = CatalogName;
}
теперь это значение хочу передать в строку, которая находиться в классах, таким видом:
C#
1
var command = new MySqlCommand("select name, link from h92817_base." + Peremen.PeremenCatalogName + ";", connection);
0
35 / 25 / 13
Регистрация: 12.02.2011
Сообщений: 178
Записей в блоге: 1
20.02.2016, 16:39
Лучший ответ Сообщение было отмечено therud как решение

Решение

А точно есть класс Peremen? Просто, судя по коду, тут только класс Link
И если нет класса перемен, а все таки линк, тогда
C#
1
2
var sqlStr = "select name, link from h92817_base." + Link.PeremenCatalogName + ";";
var command = new MySqlCommand(sqlStr, connection);

И переменная должна быть статична

public static string PeremenCatalogName { get; set; }
1
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
20.02.2016, 21:11  [ТС]
logo424, в полном коде я сделал переменную класса, полный код под спойлером в шапке темы.
вот в этих строках:
C#
1
2
3
4
5
6
7
8
9
    public partial class Form1 : Form
    {
        // Класс
        Link Peremen = new Link();
 
        public Form1()
        {
            InitializeComponent();
        }
0
Эксперт .NET
 Аватар для Rius
13205 / 7733 / 1681
Регистрация: 25.05.2015
Сообщений: 23,560
Записей в блоге: 14
20.02.2016, 21:13
therud, если хотите менять запрос, указывая эти переменные, то воспользуйтесь параметрическими запросами.
Пункт 2.4: https://www.cyberforum.ru/ado-... 82279.html
0
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
20.02.2016, 21:36  [ТС]
Цитата Сообщение от logo424 Посмотреть сообщение
И переменная должна быть статична
Все понятно.. в этом то и была ошибка

P.s.
Кликните здесь для просмотра всего текста
Только пришлось убрать переменную класса:
C#
1
Link Peremen = new Link();
так как с ней уже не получалось:
C#
1
peremen.PeremenCatalogName
Только не понял почему.. я так полагаю потому что переменная теперь статическая?

Если сделать статическую переменную, пользовался такой переменной:
C#
1
Link.PeremenCatalogName
Хорошо я вроде понял, но как быть, если понадобиться переменная класса в таком виде?
C#
1
peremen.PeremenCatalogName
0
35 / 25 / 13
Регистрация: 12.02.2011
Сообщений: 178
Записей в блоге: 1
20.02.2016, 22:50
Лучший ответ Сообщение было отмечено therud как решение

Решение

Цитата Сообщение от therud Посмотреть сообщение
Хорошо я вроде понял, но как быть, если понадобиться переменная класса в таком виде?
C#Выделить код
1
peremen.PeremenCatalogName
peremen - класс
PeremenCatalogName - переменная (например стринг), которая хранится в классе peremen

C#
1
2
3
class peremen{
public static string PeremenCatalogName = "";
}

например при нажатии на баттон, надо получить текст
C#
1
rtb.appendtext = peremen.PeremenCatalogName;
А если в классе будет не переменная, а функция, то класс будет выглядеть следующим образом

C#
1
2
3
4
5
6
7
class peremen{
 
public static void PeremenCatalogName (параметры)
{
   .....          
}
}
код на батоне peremen.PeremenCatalogName(параметры);


если класс будет таким
C#
1
2
3
4
5
6
class peremen{
public string PeremenCatalogName(параметры)
        {
                return answer;
        }
}
то код на батоне будет таким:
peremen p= new peremen();
var ololo = p.PeremenCatalogName();

ну вот как то так, надеюсь я нигде не запутался
1
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
21.02.2016, 00:36  [ТС]
***
Миниатюры
Передать переменную в класс  
0
2 / 2 / 5
Регистрация: 25.08.2015
Сообщений: 129
21.02.2016, 02:14  [ТС]
logo424, Спасибо, буду пробовать)))

Добавлено через 1 час 37 минут
logo424, оказалось не так то и сложно, отличные примеры!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.02.2016, 02:14
Помогаю со студенческими работами здесь

Как передать в переменную класс-наследник?
Есть главный класс куда я отправляю класс-контроллер class DrawBase { private: Controller* controllerClass; public: void...

QT Передать переменную из ComboBoxDelegate в другой класс
Есть ComboBoxDelegate, в котором я получаю значение из нужного столбца void ComboBoxDelegate::setModelData(QWidget *editor,...

как передать глобальную переменную в класс
Всем привет! подскажите плиз, ответ на такой вопрос? У меня есть массив строк например String str он заполняется при создании...

Можно ли передать переменную в класс без указания ее типа
Есть универсальный класс. С дофига и более функциями. И при работе с классом приходится постоянно писать типы переменных в &lt;&gt; ...

Как передать из ACCESS переменную STRING в переменную окружения (типа CMD команды SET=)
Добрый день! Подскажите как установить переменную окружения из ACCESS. Допустим у меня есть переменная CurrentDir типа String и я хочу...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru