Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 9
MySQL

Необходимо создать пользовательский интерфейс, реализующий поиск по БД

02.12.2014, 21:52. Показов 3186. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется БД на mySql Аптека. Поиск по таблице Препарат. Нужно на форме создать textBox, в который пишем название препарата, который ищем, и по нажатию на кнопку button1, заполняется элемент dataGridView1 препаратами с данным названием, с отображением дополнительных полей таблицы Препарат,а именно: Адреса аптеки и стоимости препарата.

На данный момент код реализует по нажатию на кнопку заполнение dataGridView1 всеми строками таблицы.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Button1Click(object sender, System.EventArgs e)
        {
            
            
            
            MySqlConnection con=new MySqlConnection();
            con.ConnectionString="Database=aptekamorozova; Data Source=localhost;User id=root;Password=1234";
            con.Open();
            MySqlDataAdapter ad= new MySqlDataAdapter("select * from Preparat",con);
            DataSet ds=new DataSet();
            
            ad.Fill(ds,"Preparat");
            con.Close();
            dataGridView1.DataSource=ds.Tables["Preparat"];
            
            
        }
Никак не могу разобраться с этим. Очень надеюсь на помощь!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.12.2014, 21:52
Ответы с готовыми решениями:

Создать пользовательский интерфейс в GUI
Вот такая задача дана, помогите пожалуйста выполнить задание Составить алгоритм вычисления расстояния между двумя точками на плоскости...

Как создать пользовательский интерфейс на делпфи?
как создать пользовательский интерфейс ? В этой области полный нуб но мне очень надо!

Создать меню и пользовательский интерфейс в целом
Кто может помочь с созданием пользовательского интерфейса? Не обязательно чтобы все работало правильно, важны скриншоты что все пункты...

21
30 / 21 / 9
Регистрация: 22.11.2014
Сообщений: 129
02.12.2014, 22:12
Попробуйте так:

C#
1
2
3
4
5
6
7
8
// получаем значение текстового поля
string name = textBox.Text;
// создаём строку запроса к базе с выборкой по полю "name"
string query = "select * from Preparat where name = " + name;
 
...
 
MySqlDataAdapter ad= new MySqlDataAdapter(query,con);
1
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
02.12.2014, 22:24
serg4242, ага, а в textBox вводим текст: ''; TRUNCATE TABLE Preparat;
1
30 / 21 / 9
Регистрация: 22.11.2014
Сообщений: 129
02.12.2014, 23:11
Цитата Сообщение от Петррр Посмотреть сообщение
serg4242, ага, а в textBox вводим текст: ''; TRUNCATE TABLE Preparat;
Это ж учебное задание, не будут туда вводить такие гадости

Петррр, а в .NET есть стандартная функция для экранирования?
1
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
03.12.2014, 08:14
serg4242, да есть, и называется это все не экранирование, а переметризованные запросы. Все провайдеры переопределяют свойство Parameters, которое содержит параметры запроса.
1
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 9
03.12.2014, 14:19  [ТС]
Добавлено через 1 минуту
serg4242,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void Button1Click(object sender, System.EventArgs e)
        {
            
            
            string name = textBox1.Text;
            string query = "select * from Preparat where nazvanie = '" + name+"'";
            MySqlConnection con=new MySqlConnection();
            con.ConnectionString="Database=aptekamorozova 20141104 1123; Data Source=localhost;User id=root;Password=1234";
            con.Open();
            MySqlDataAdapter ad= new MySqlDataAdapter(query,con);
            DataSet ds=new DataSet();
            ad.Fill(ds,"Preparat");
            con.Close();
            dataGridView1.DataSource=ds.Tables["Preparat"];
            
        }
выдает просто пустое dataGridView

Добавлено через 44 минуты
Мне кажется, это связано с хранением данных в ячейке типа varchar. А других типов для текста в данной СУБД нет. Как можно решить эту проблему?
0
30 / 21 / 9
Регистрация: 22.11.2014
Сообщений: 129
03.12.2014, 16:10
проверьте с помощью менеджера БД проверить возвращает ли этот запрос какие-либо значения.
0
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 9
04.12.2014, 07:05  [ТС]
serg4242, если использовать в запросе int, например передавая код препарата,то он выводит все.А задание, к сожалению, звучит именно по названию.
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
04.12.2014, 12:36
Цитата Сообщение от Петррр Посмотреть сообщение
TRUNCATE TABLE Preparat;
на это еще права иметь надобно

Добавлено через 45 секунд
а вообще, лучше BindigSource пользовать

Добавлено через 3 минуты
Цитата Сообщение от anastaimoroz Посмотреть сообщение
Как можно решить эту проблему?
я надеюсь, что в MySQL есть LIKE. Тогда
MySQL
1
where nazvanie like '%
1
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 9
04.12.2014, 14:00  [ТС]
pincet,спасибо, попробую через like.
то есть нужно написать: string query = "select * from Preparat where nazvanie like '%name'; ? или как?
0
30 / 21 / 9
Регистрация: 22.11.2014
Сообщений: 129
04.12.2014, 14:06
Знак процентов заменяет любое количество символов. Строка поиска по названию включающему в себя "name" будет выглядеть так:

C#
1
string query = "select * from Preparat where nazvanie like '%name%'";
1
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 9
04.12.2014, 14:19  [ТС]
serg4242, ага,это поняла,но мне к сожалению заранее неизвестно чтодолжно быть тут:'% %'. Так как это там появляется после того,как запишется в textBox
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
04.12.2014, 14:35
anastaimoroz, самый простой вариант: скачать из БД всю необходимую таблицу и потом отфильтровать ее через LINQ to DataSet. Ну и вывести в грид.
1
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 9
04.12.2014, 14:42  [ТС]
insite2012, к сожалению с LINQ to DataSet не сталкивалась,понятия не имею как с этим работать,чтобы учесь все требования, но за ответ, спасибо!
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
04.12.2014, 14:46
anastaimoroz, опишите структуру таблицы, из которой необходимо брать данные. И какого вида таблица должна получиться. Я сделаю вам пример.
1
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 9
04.12.2014, 14:52  [ТС]
insite2012, огромное спасибо!

Таблица Preparat содержит поля:
kodpreparata (int), nazvanie(varchar), recept(bool), srok_godnosti(datetime), kodapteki(int), adres(varchar), kodpostavshika(int).

В текстовое поле (textbox1) я ввожу необходимое название препарата, и нажимаю на кнопку "поиск" (button1). После чего появляется таблица,содержащая:
nazvanie(varchar), kodapteki(int), adres(varchar) из таблицы Preparat. Где nazvanie это и есть название препарата,который мы ищем. спасибо за помощь,надеюсь,что верно объяснила
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
04.12.2014, 15:14
anastaimoroz, хорошо.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
04.12.2014, 16:16
anastaimoroz, ну вот как-то так... Имена, естественно, измените. И да, вы или пишите по-русски названия, либо по-английски, но не используйте транслит. Слух режет.
Код:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
using System.Data.SqlClient;
 
namespace DataFilter_Test {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
            LoadDataTable();
            btnFilterTable.Click += new EventHandler(btnFilterTable_Click);
        }
 
        void btnFilterTable_Click(object sender, EventArgs e) {
 
            var data = ((DataTable)dataGridView1.DataSource).AsEnumerable().
                Where(r => r.Field<string>("название") == txtNameOfProduct.Text).
                Select(r => new {
                    название = r.Field<string>("название"),
                    код_аптеки = r.Field<string>("код_аптеки"),
                    адрес = r.Field<string>("адрес")
                });
 
            dataGridView1.DataSource = null;
            dataGridView1.DataSource = data.ToList();
        }
        void LoadDataTable() {
            string connectionString = @"Data Source=yar\SQLEXPRESS;Initial Catalog=TestDB;"+
                                       "Integrated Security=True;Pooling=False";
            DataTable dtd = new DataTable();
            using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Аптека",connectionString)) {
                adapter.Fill(dtd);
            }
            dataGridView1.DataSource = dtd;
        }
    }
}
Структура таблицы.
Миниатюры
Необходимо создать пользовательский интерфейс, реализующий поиск по БД  
1
0 / 0 / 0
Регистрация: 25.11.2014
Сообщений: 9
04.12.2014, 16:23  [ТС]
insite2012, а как в ней организовать поиск,как мне требуется?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
04.12.2014, 16:25
anastaimoroz, так он там уже организован... Там есть текстовое поле, вводишь в него название и получаешь результат...
В строке 23 кода, мы в условие выборки подставляем то, что написали в текстовом поле (txtNameOfProduct.Text)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.12.2014, 16:25
Помогаю со студенческими работами здесь

Как создать для формы пользовательский интерфейс
День добрый, хотело бы узнать, как украсить форму. Например как сделать меню, как в браузеров, или шапку поправить, как адобовые продукты?

База данных "учебный план специальности". GUI. Графический интерфейс. Пользовательский интерфейс
Всем привет. Свалилась на меня, значит, курсовая по прологу. Все бы ничего, да реализовать ее надо через графический интерфейс. На турбо...

Объект, реализующий интерфейс
Добавлено через 5 минут Есть, например, интерфейс Parcelable.Creator. В Android Studio, для того, чтобы объявить объект , реализующий...

Пользовательский интерфейс
Не могу понять,как задать пользовательский интерфейс проге с окном консоли. Как соответственно: о каком пользовательском интерфейсе может...

Пользовательский интерфейс в 80-е
Задался вопросом, как до появления параллельного программирования осуществлялось взаимодействие с пользователем в режиме реального времени?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru