Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422

Поиск Datagrid

02.02.2019, 21:03. Показов 936. Ответов 6

Студворк — интернет-сервис помощи студентам
Добрый вечер, пытаюсь сделать поиск, но не особо получается вот код:

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
        string sql;
        //LISTBOX
        private void button2_Click(object sender, EventArgs e)
        {
            string text_Listbox1 = listBox1.GetItemText(listBox1.SelectedItem);
            switch (text_Listbox1)
            {
                case "Имени":
                    sql = "name";
                    break;
                case "Фамилии":
                    sql = "surname";
                    break;
                case "Отчеству":
                    sql = "patronymic";
                    break;
                default:
                    MessageBox.Show("Такого не может быть!");
                    break;
            };
            
                MySqlConnection coon = new MySqlConnection(connStr);
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = coon;
                cmd.CommandText = "SELECT * FROM clients WHERE " + sql + " =('" + textBox1.Text + "')";
                MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
                DataSet dataset = new DataSet();
                adapter.Fill(dataset);
                coon.Close();
                
        }
Добавлено через 1 час 0 минут
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
        private void button2_Click(object sender, EventArgs e)
        {
            string text_Listbox1 = listBox1.GetItemText(listBox1.SelectedItem);
            string sqll;
            switch (text_Listbox1)
            {
                case "Имени":
                    sqll = "name";
                    break;
                case "Фамилии":
                    sqll = "surname";
                    break;
                case "Отчеству":
                    sqll = "patronymic";
                    break;
                default:
                    MessageBox.Show("Такого не может быть!");
                    break;
            };
 
            MySqlConnection conn = new MySqlConnection(connStr);
            // устанавливаем соединение с БД
            conn.Open();
            // запрос
            string sql = "SELECT * FROM clients WHERE '" + sqll + "'='" + textBox1.Text + "'";
            // объект для выполнения SQL-запроса
            MySqlCommand command = new MySqlCommand(sql, conn);
            // объект для чтения ответа сервера
            MySqlDataReader reader = command.ExecuteReader();
            // читаем результат
            while (reader.Read())
            {
                // элементы массива [] - это значения столбцов из запроса SELECT
                Console.WriteLine(reader[0].ToString() + " " + reader[1].ToString());
            }
            reader.Close(); // закрываем reader
            // закрываем соединение с БД
            conn.Close();
почему в sql, sqll без значения?

Добавлено через 4 минуты
И постоянно отрабатывает "такого не может быть")) по-моему значение из listbox'a нормально считать не может

Добавлено через 6 минут
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
 string sqll;
        private void button2_Click(object sender, EventArgs e)
        {
            switch (listBox1.SelectedIndex)
            {
                case 0:
                    sqll = "name";
                    break;
                case 1:
                    sqll = "surname";
                    break;
                case 2:
                    sqll = "patronymic";
                    break;
            };
 
            MySqlConnection conn = new MySqlConnection(connStr);
            // устанавливаем соединение с БД
            conn.Open();
            // запрос
            string sql = "SELECT * FROM clients WHERE '" + sqll + "'='" + textBox1.Text + "'";
            // объект для выполнения SQL-запроса
            MySqlCommand command = new MySqlCommand(sql, conn);
            // объект для чтения ответа сервера
            MySqlDataReader reader = command.ExecuteReader();
            // читаем результат
            while (reader.Read())
            {
                // элементы массива [] - это значения столбцов из запроса SELECT
                Console.WriteLine(reader[0].ToString() + " " + reader[1].ToString());
            }
            reader.Close(); // закрываем reader
            // закрываем соединение с БД
            conn.Close();
Вот так тоже не работает
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.02.2019, 21:03
Ответы с готовыми решениями:

Поиск по datagrid !
Всем привет у меня имеется код на поиск в датагрид через текстбокс по нажатию кнопки. к гриду привязана таблица, где есть столбцы k_stud,...

Поиск по datagrid
Есть цикл по поиску в datagrid, но мне нужно сделать так что бы в datagrid выводился только результат поиска Вот сам цикл поиска for...

Поиск по dataGrid
Доброго времени суток, имеется поиск по datagrid ниже реализация { for (int i = 0; i < dataGridView1.RowCount;...

6
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
02.02.2019, 22:25
Зачем написали код? Напишите конкретно условие, возможно специалисты напишут более удачный, компактный код.
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
02.02.2019, 22:56  [ТС]
Пишу код чтобы самому разбираться.. А условие такое:
1) Есть ListBox в котором выбирается поле из таблицы(Фамилия, Имя, Отчество)
2) Есть TextBox в который вводится имя или что либо в рамках ListBox'a
3) Есть Кнопка нажав на которую происходит поиск..

Как то так..
0
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
03.02.2019, 00:34
Более конкретно
1. Кто заполняет датагрид?
2. Есть заполненная таблица
3. Выбираем Фамилию или Имя или Отчество
4. Выбранный элемент ищем в датагриде

Код - при получении данных и оплате кода по регламенту CyberForum
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
03.02.2019, 13:10  [ТС]
Скрин
Миниатюры
Поиск Datagrid  
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
03.02.2019, 14:40  [ТС]
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
 string sqll;
            switch (listBox1.SelectedIndex)
            {
                case 0:
                    sqll = "name";
                    break;
                case 1:
                    sqll = "surname";
                    break;
                case 2:
                    sqll = "patronymic";
                    break;
                   
            }
 
 
            MySqlConnection coon = new MySqlConnection(connStr);
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = coon;
            cmd.CommandText = "SELECT * FROM clients WHERE " + sqll + "='" + textBox1.Text + "'";
            MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
            DataSet dataset = new DataSet();
            adapter.Fill(dataset);
            bindingSorce.DataSource = dataset.Tables[0];
            dataGridView1.DataSource = bindingSorce;
            coon.Close();
Вот так работает только если задать значение переменной, не знаю почему не видит переменную в SQL запросе.. подскажите?

Добавлено через 26 минут
MySql.Data.MySqlClient.MySqlException: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= ff' at line 1"

Добавлено через 3 минуты
Сделал sql паблик стринг, по идее должно было работать..
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
04.02.2019, 15:36  [ТС]
Решил вот так..

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
        private void button2_Click(object sender, EventArgs e)
        {
 
            MySqlConnection coon = new MySqlConnection(connStr);
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = coon;
            if (comboBox1.SelectedIndex == 0)
                {
 
                    cmd.CommandText =  "SELECT * FROM clients WHERE name='" + textBox1.Text + "'";
 
                }
 
                if (comboBox1.SelectedIndex == 1)
                {
 
                    cmd.CommandText = "SELECT * FROM clients WHERE surname='" + textBox1.Text + "'";
 
                }
                if (comboBox1.SelectedIndex == 2)
                {
                    cmd.CommandText = "SELECT * FROM clients WHERE patronymic='" + textBox1.Text + "'";
 
                }
            MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
            DataSet dataset = new DataSet();
            adapter.Fill(dataset);
            bindingSorce.DataSource = dataset.Tables[0];
            dataGridView1.DataSource = bindingSorce;
            coon.Close();
 
        }
Добавлено через 1 минуту
Не забыть..

C#
1
2
public string connStr = "server=;user=;password=;database=";
        public string sqll;
Добавлено через 40 секунд
Теперь другая проблема в селекте датагрида..

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
//ВПЕРЕД
 
        private void button9_Click(object sender, EventArgs e)
        {
            if (dataGridView1.RowCount -2 <= dataGridView1.CurrentCell.RowIndex)
            {
                button9.Visible = false;
            }
            else if (dataGridView1.CurrentCell.RowIndex >= -1)
            {
                button9.Visible = true;
                dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex + 1].Cells[dataGridView1.CurrentCell.ColumnIndex];
            }
        }
 
        //НАЗАД
 
        private void button10_Click(object sender, EventArgs e)
        {
            if (dataGridView1.CurrentCell.RowIndex <= 0)
            {
                button10.Visible = false;
            }
            else if(dataGridView1.CurrentCell.RowIndex >= 0)
            {
                button10.Visible = true;
                dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex - 1].Cells[dataGridView1.CurrentCell.ColumnIndex];
            }
        }
Добавлено через 2 минуты
Когда текущий CurrentCell.RowIndex "Упирается" кнопка исчезает(сделал енеблед, но временно висибле), но при обратном когда не "упирается" кнопка не появляется..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.02.2019, 15:36
Помогаю со студенческими работами здесь

Поиск по datagrid !
Всем привет! Подскажите, люди добрые. У меня по нажатию кнопки, через текстбокс, осуществляется поиск по datagrid. В гриде есть столбцы...

Поиск по AD и вывод в datagrid
Господа помогите начинающему криворуку скриптом. Задача такая. В текст бокс вводится логин идет запрос к АД на поиск учетной записи. ...

Поиск по таблица и строкам в Datagrid
Доброго времени суток, форумчане! Вопрос таков: Вот мой код, где я успешно ищу по столбцам нужные данные, фильтрую строки, и...

Перенос данных из трех таблиц DataGrid в другую таблицу DataGrid
Коллеги, всем добрый день!. Прошу у Вас помощи вот в таком вопросе. Я разрабатываю БД подход CodeFirst на С#. У меня есть на WinForm 3...

поиск в datagrid
как сделать поиск в datagrid если данные в datagrid берутся из текстового файла???


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru