Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 1
Регистрация: 25.03.2016
Сообщений: 112

Ошибка MysqlDataReader

01.09.2021, 00:10. Показов 2736. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Использую для получения данных из базы MysqlDataReader опишу ситуацию:
Ошибка возникает на сервере, при подключении клиента или же получения некоторых данных, необходимо получать строки из базы, таких пользователей может быть много.
Если одновременно подключатся пользователи ошибка "MysqlDataReader уже используется в данном подключении" ну илиже выполнят если какую нибудь команду , которая получает данные из базы посредством MySQL data Reader.
Подскажите как быть.
Вот к примеру код:
Кликните здесь для просмотра всего текста
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
case "GetTP":
                                {
                                    com.CommandText = string.Format("SELECT COUNT(*) FROM TP WHERE identifikator_user = {0};", state.UserID);
                                    string TPCount = com.ExecuteScalar().ToString();
                                    if (TPCount != "0")
                                    {
                                        stream.Position = 0;
                                        writer.Write("GetTP");
                                        writer.Write("true");
                                        writer.Write(TPCount);
                                        com.CommandText = string.Format("SELECT identificator,text,tema,author,tehnik,status,otvet FROM TP WHERE identifikator_user = {0};", state.UserID);
                                        using (MySqlDataReader rds = com.ExecuteReader())
                                        {
                                            while (rds.Read())
                                            {
                                                writer.Write(rds.GetString(0));
                                                writer.Write(rds.GetString(1));
                                                writer.Write(rds.GetString(2));
                                                writer.Write(rds.GetString(3));
                                                writer.Write(rds.GetString(4));
                                                string statuss = rds.GetString(5);
                                                if (statuss == "1")
                                                {
                                                    writer.Write("В работе");
                                                }
                                                else if (statuss == "2")
                                                {
                                                    writer.Write("Решено");
                                                }
                                                else
                                                {
                                                    writer.Write("Новый");
                                                }
                                                writer.Write(rds.GetString(6));
                                            }
                                        }
                                        con.ClearPoolAsync(con);
                                        handler.Send(state.buffer);
                                    }
                                    else
                                    {
 
                                        stream.Position = 0;
                                        writer.Write("GetTP");
                                        writer.Write("false");
                                        handler.Send(state.buffer);
                                    }
                                }
                                break;
case "GetLikes":
                                {
                                    int[] dds1 = new int[30];
                                    Int64[] dds2 = new Int64[30];
                                    int[] dds3 = new int[30];
                                    Int64[] dds4 = new Int64[30];
                                    com.CommandText = string.Format("SELECT COUNT(*) FROM work WHERE type!=4 AND type!=5 AND type !=6;");
                                    string count1 = Convert.ToString(com.ExecuteScalar());
                                    if (count1 != "0")
                                    {
                                        com.CommandText = string.Format("SELECT type,identifikator,work_price,OwnerID FROM work WHERE type!=4 AND type!=5 AND type !=6 LIMIT 0, 30");
                                        LikeObjectType typeer = LikeObjectType.Photo;
                                        stream.Position = 0;
                                        writer.Write("getlikes");
                                        int i = 0;
                                        using (MySqlDataReader mreader = com.ExecuteReader())
                                        {
                                            while (mreader.Read())
                                            {
                                                int q1 = Convert.ToInt32(mreader.GetString(0));
                                                Int64 q2 = Convert.ToInt64(mreader.GetString(1));
                                                int q3 = Convert.ToInt32(mreader.GetString(2));
                                                Int64 q4 = Convert.ToInt64(mreader.GetString(3));
                                                if (q1 == 1)
                                                    typeer = LikeObjectType.Video;
                                                if (q1 == 2)
                                                    typeer = LikeObjectType.Photo;
                                                if (q1 == 3)
                                                    typeer = LikeObjectType.Post;
                                                if (!vkSTATUS.Likes.IsLiked(out bool ffsst, typeer, q2, Convert.ToInt64(state.UserID), q4))
                                                {
                                                    dds1[i] = q1;
                                                    dds2[i] = q2;
                                                    dds3[i] = q3;
                                                    dds4[i] = q4;
                                                    i++;
                                                }
                                            }
                                        }
                                        con.ClearPoolAsync(con);
                                        writer.Write(i);
                                        for (int m = 0; m < i; m++)
                                        {
                                            writer.Write(dds1[m]);
                                            writer.Write(dds2[m]);
                                            writer.Write(dds3[m]);
                                            writer.Write(dds4[m]);
                                        }
                                        handler.Send(state.buffer);
                                    }
                                    else
                                    {
                                        stream.Position = 0;
                                        writer.Write("getlikes");
                                        writer.Write("0");
                                        handler.Send(state.buffer);
                                    }
                                }
                                break;

Пробовал без using просто коммандой reader.close(), так же бьёт ошибку , поправьте меня пожалуйста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.09.2021, 00:10
Ответы с готовыми решениями:

MySqlDataReader
Доброе утро. Что-то я не пойму. У меня есть таблица, в ней есть три записи. Пытаюсь заполнить dataGridView с помощью MysqlDataReader и...

MySqlDataReader mdr = cmd.ExecuteReader() почему происходит ошибка
public void InsertGroupData(string Group, string kurs, int idProfile, string tbGroup) { string conStr =...

MySqlDataReader
Только начал изучать, но честно не могу понять что происходит. Вот код: MySqlCommand select_card3 = new MySqlCommand(&quot;SELECT...

6
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
01.09.2021, 01:17
ZarGame, похоже вы используете одну и ту же команду. Попробуйте создавать для каждого запроса новую.

Цитата Сообщение от ZarGame Посмотреть сообщение
con.ClearPoolAsync(con);
Вы трчно уверены что вам это нужно?
0
1 / 1 / 1
Регистрация: 25.03.2016
Сообщений: 112
01.09.2021, 14:22  [ТС]
Я уже точно не в чём не уверент, указал данный параметр , думал поможет

Добавлено через 1 час 28 минут
Цитата Сообщение от OwenGlendower Посмотреть сообщение
ZarGame, похоже вы используете одну и ту же команду. Попробуйте создавать для каждого запроса новую.
Подскажите пожалуйста, уже всё перепробовал, буквально неделю пробую уже
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
01.09.2021, 15:06
Цитата Сообщение от ZarGame Посмотреть сообщение
Подскажите пожалуйста, уже всё перепробовал, буквально неделю пробую уже
Добавьте в начало каждого case
C#
1
com = new MySqlCommand(connection);
0
 Аватар для Andrey-MSK
3349 / 2235 / 388
Регистрация: 14.08.2018
Сообщений: 7,557
Записей в блоге: 4
01.09.2021, 15:27
дак можно же в каждом case делать
C#
1
2
3
4
5
6
7
8
9
10
11
12
using (SqlConnection connection = new SqlConnection(_connectionString))
{
  connection.Open();
  try
    {
      // тут код из case
    }
  catch (Exception ex)
    {
      // .......
    }
 }
0
1 / 1 / 1
Регистрация: 25.03.2016
Сообщений: 112
01.09.2021, 16:17  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Добавьте в начало каждого case
C#Выделить код
1
com = new MySqlCommand(connection);
Да можно но тогда надо добавлять постоянно сначала команду а потом коннект к примеру com = new MysqlComman("SELECT",connection);

Добавлено через 6 минут
Цитата Сообщение от Andrey-MSK Посмотреть сообщение
дак можно же в каждом case делать
C#
И это можно сделать, тогда интервал между запросами будет как минимум 2 секунды
0
 Аватар для Andrey-MSK
3349 / 2235 / 388
Регистрация: 14.08.2018
Сообщений: 7,557
Записей в блоге: 4
01.09.2021, 16:28
Цитата Сообщение от ZarGame Посмотреть сообщение
тогда интервал между запросами будет как минимум 2 секунды
Почему? Там пул соединений, они используются моментально.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.09.2021, 16:28
Помогаю со студенческими работами здесь

MySqlDataReader не возвращает результат
Добрый день! Следующий код почему-то не возвращает результатов, хотя они есть connection.Open();//State.Open MySqlCommand select =...

MySqlDataReader непонятное исключение
//загружаю форму private void Form1_Load(object sender, EventArgs e) { try { ...

MySqlDataReader при NULL завершает перебор
Добрый день Столкнулся с такой проблемой MySQLDB db = new MySQLDB(); db.openConnection(); using (MySqlCommand sqlCommand = new...

MySqlDataReader.GetName() не возвращает название столбцов
Метод GetName() класса MySqlDataReader почему-то вместо названия столбцов возвращает id_c(id тренера). Подскажите, пожалуйста, в чём может...

Не могу получить результат выборки нескольких строк MySqlDataReader
запросом на выборку получаю n строк далее некоторые поля присваиваю переменным while (mySqlDataReader.Read()) { lesson =...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
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
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru