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

Дублирование записей Datagrid при повторном открытии формы

27.02.2019, 12:09. Показов 1081. Ответов 11

Студворк — интернет-сервис помощи студентам
Когда закрываю форму, а затем повторно открываю, то происходит дублирование записей... Помогает только обновление данных...

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private void button11_Click(object sender, EventArgs e)
        {
            
            MySqlConnection coon = new MySqlConnection(connStr);
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = coon;
            cmd.CommandText = "SELECT * FROM book_supp";
            MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
            DataSet dataset = new DataSet();
            adapter.Fill(dataset);
            bindingSorce.DataSource = dataset.Tables[0];
            dataGridView1.DataSource = bindingSorce;
            coon.Close();
            
        }
Как быть?

Вывод происходит так..

C#
1
2
3
            InitializeComponent();
            DBUtil.ReadBookSupp();
            dataGridView1.DataSource = Data.GetBookSupp();
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.02.2019, 12:09
Ответы с готовыми решениями:

Дублирование данных в DGV при повторном открытии формы
Доброе время суток. Происходит какая -то странность. Код формы Public Class viewer Dim path As String = "dach.mdb"...

Формы. При повторном открытии формы сбрасываются результаты вывода данных
Создал 2 формы. В 1й форме проходит расчет различных выражений. Данные расчета присваиваются переменным. Ввожу данные Нажимаю кнопку...

Значение переменных не сохраняется при повторном открытии формы
По совету из форума создал класс в главном классе проекта (главный класс всё время в памяти) static class Data { public...

11
Эксперт .NET
 Аватар для Usaga
14136 / 9356 / 1350
Регистрация: 21.01.2016
Сообщений: 35,169
27.02.2019, 14:32
Цитата Сообщение от BlacKCheT Посмотреть сообщение
Как быть?
Отладчиком воспользоваться для начала, чтобы посмотреть что происходит.
0
HF
 Аватар для HF
1311 / 889 / 200
Регистрация: 09.09.2011
Сообщений: 2,644
Записей в блоге: 2
27.02.2019, 15:16
Цитата Сообщение от BlacKCheT Посмотреть сообщение
dataGridView1.DataSource = Data.GetBookSupp();
Цитата Сообщение от BlacKCheT Посмотреть сообщение
bindingSorce.DataSource = dataset.Tables[0];
Если есть BindingSource, то только с ним и работайте и источник пусть будет всегда один.
Почему в одном случае у вас данные из какого-то метода (что там происходит вообще?) поступают, а при клике - тоже своя логика.
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
27.02.2019, 15:42  [ТС]
Данные хранятся так, и поступают так..

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
static class DBUtil
    {
 
        private static string connStr = "server=127.0.0.1;user=root;password=;database=book_rental";
 
 
        public static void ReadCard()
        {
            using (MySqlConnection connection = new MySqlConnection(connStr))
            {
                try
                {
                    connection.Open();
                    MySqlCommand command = new MySqlCommand();
                    command.Connection = connection;
                    command.CommandText = "SELECT * FROM card";
                    MySqlDataReader reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        Data.AddCard(
                            new Card()
                            {
                                ID = reader.GetInt32(0),
                                id_client = reader.GetInt32(1).ToString(),
                                res_of_cont = reader.GetString(2),
                                date_of_cont = reader.GetDateTime(3).ToString("yyyy.MM.dd"),
                            }
                            );
                    }
                    reader.Close();
                }
                catch (Exception ex)
                {
                    // error to log output
                }
            }
        }
 
 
 
        public static void ReadBooks()
        {
            using (MySqlConnection connection = new MySqlConnection(connStr))
            {
                try
                {
                    connection.Open();
                    MySqlCommand command = new MySqlCommand();
                    command.Connection = connection;
                    command.CommandText = "SELECT * FROM books";
                    MySqlDataReader reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        Data.AddBooks(
                            new Books()
                            {
                                ID = reader.GetInt32(0),
                                name = reader.GetString(1),
                                author = reader.GetString(2),
                                year = reader.GetInt32(3).ToString("yyyy"),
                                genre = reader.GetString(4),
                                availab = reader.GetInt32(5).ToString(),
                                coll_val = reader.GetFloat(6).ToString(),
                                e_variant = reader.GetInt32(7).ToString(),
                                count = reader.GetInt32(8).ToString(),
                                img = reader.GetString(9)
                            }
                            );
                    }
                    reader.Close();
                }
                catch (Exception ex)
                {
                    // error to log output
                }
 
            }
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Books
    {
 
        public int ID { get; set; }
        public string name { get; set; }
        public string author { get; set; }
        public string year { get; set; }
        public string genre { get; set; }
        public string availab { get; set; }
        public string coll_val { get; set; }
        public string e_variant { get; set; }
        public string count { get; set; }
        public string img { get; set; }
 
    }
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 Data
    {
        public static List<Clients> ClientsRepository = new List<Clients>();
 
        public static IEnumerable<Clients> GetClients()
        {
            return ClientsRepository;
        }
 
        public static void AddClients(Clients item)
        {
            ClientsRepository.Add(item);
        }
 
        public static Clients GetClients(int id)
        {
            return ClientsRepository.Where(x => x.ID == id).First();
        }
 
 
 
 
        public static List<Books> BooksRepository = new List<Books>();
 
        public static IEnumerable<Books> GetBooks()
        {
            return BooksRepository;
        }
 
        public static void AddBooks(Books item)
        {
            BooksRepository.Add(item);
        }
 
        public static Books GetBooks(int id)
        {
            return BooksRepository.Where(x => x.ID == id).First();
        }
0
HF
 Аватар для HF
1311 / 889 / 200
Регистрация: 09.09.2011
Сообщений: 2,644
Записей в блоге: 2
27.02.2019, 20:11
А где где Data.GetBookSupp(). Даёте нам только то что нам можно видеть?
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
27.02.2019, 20:49  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 public static List<BookSupp> BookSuppRepository = new List<BookSupp>();
 
        public static IEnumerable<BookSupp> GetBookSupp()
        {
            return BookSuppRepository;
        }
 
        public static void AddBookSupp(BookSupp item)
        {
            BookSuppRepository.Add(item);
        }
 
        public static BookSupp GetBookSupp(int id)
        {
            return BookSuppRepository.Where(x => x.ID == id).First();
        }
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
27.02.2019, 21:04
Цитата Сообщение от BlacKCheT Посмотреть сообщение
Когда закрываю форму, а затем повторно открываю, то происходит дублирование записей
Вангую, что вы постоянно добавляете записи в список, но сам список не чистите. Перед добавлением записей список нужно чистить.
1
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
27.02.2019, 21:59  [ТС]
Как чистить? Щас будем тыкать..
0
Эксперт .NET
 Аватар для Usaga
14136 / 9356 / 1350
Регистрация: 21.01.2016
Сообщений: 35,169
28.02.2019, 06:43
BlacKCheT, не используйте вы этот SqlDataReader. Возьмите Dapper. У вас и мощь голого SQL останется и от рутины проецирования выборки на класс избавитесь.
0
96 / 76 / 25
Регистрация: 18.02.2016
Сообщений: 771
28.02.2019, 09:55
Цитата Сообщение от BlacKCheT Посмотреть сообщение
Как чистить? Щас будем тыкать..
перед
C#
1
  adapter.Fill(dataset);
нужно
C#
1
dataset.Reset()
0
Лучше не лучше, но лучше.
 Аватар для BlacKCheT
16 / 14 / 3
Регистрация: 11.03.2018
Сообщений: 422
01.03.2019, 14:03  [ТС]
onimor, А где вы у меня это увидели?
0
96 / 76 / 25
Регистрация: 18.02.2016
Сообщений: 771
03.03.2019, 11:59
Цитата Сообщение от BlacKCheT Посмотреть сообщение
onimor, А где вы у меня это увидели?
тут. или это то обновление, которое помогает?
Цитата Сообщение от BlacKCheT Посмотреть сообщение
DataSet dataset = new DataSet();
* * * * * * adapter.Fill(dataset);
вообще перед тем как присвоить - везде нужно обнулить либо
C#
1
 clear();
либо
C#
1
dispose();
C#
1
Reset()
хотя бы
C#
1
 = "";
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.03.2019, 11:59
Помогаю со студенческими работами здесь

Ошибка при повторном открытии книги
У мея есть код, написан на VBA в Excel 2010. Все работает отлично, при запуске надо выбрать книгу через проводник. Начали возникать случаи...

Работа menuStrip при повторном открытии
При втором открытии меню кнопка, открытая накануне, не реагирует сразу, а только после нескольких кликов или после клика другой кнопки. Как...

TFileOpenDialog ошибка при повторном открытии
Гуглил, там много чего у него было, create, ещё что-то... Я на форме разместил этот объект, и так использую: procedure...

Ошибка при повторном открытии книги процедурой
Private Sub CommandButton4_Click() If WorkbookIsOpen(&quot;Книга.xls&quot;) = True Then Exit Sub 'проверка функцией открыта ли книга если да то...

Окно во весь экран при повторном открытии
Всем привет, очень неудобно получается когда например открываю мой компьютер, делаю окно во весь экран, но после 2-го или 3-го открытия оно...


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

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