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

Ошибка в коде вывода данных из MySQL таблицы

12.08.2014, 01:19. Показов 1777. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Код должен:
1. Подключиться к БД
2. Считать данные из таблицы "iqaou" и вывести их в MessageBox (или всё-таки надо выводить в GridView?)

Код не работает. Ошибок не выдаёт.
Будьте добры, подскажите.
Заранее спасибо.
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
MySqlCommand command = new MySqlCommand(); ;
            string connectionString, commandString;
            connectionString = "Database=" + WIT_DB + ";Data Source=" + WIT_IP + ";User Id=" + WIT_ID + ";Password=" + WIT_Password + ";charset=utf8";
            MySqlConnection connection = new MySqlConnection(connectionString);
            commandString = "SELECT * FROM iqaou;";
            command.CommandText = commandString;
            command.Connection = connection;
            MySqlDataReader reader;
            try
            {
                command.Connection.Open();
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    string a = Convert.ToString(reader.GetValue(0));
                    MessageBox.Show(a);
                }
                reader.Close();
            }
            catch (MySqlException ex)
            {
                Console.WriteLine("Error: \r\n{0}", ex.ToString());
            }
            finally
            {
                command.Connection.Close();
            }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.08.2014, 01:19
Ответы с готовыми решениями:

Ошибка в коде с признаками (свойствами) вывода данных
Добрый всем вечер, пытаюсь написать программу которая открывает уже существующий файл с занесенной информацией,выводит ее на экран и дает...

Ограничение вывода из таблицы MySQL
Всем здравствуйте! Есть проблема, конечно же, наверняка распространенная! Гуглил - не помогло! Нужно, чтобы на главной странице...

Написать программу, которая должна включать функции для: - вывода шапки таблицы; - вывода данных одной строки
Написать программу, которая должна включать функции для: - вывода шапки таблицы; - вывода данных одной строки таблицы; - ввода и...

14
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
12.08.2014, 10:25
1. строку подключения лучше создавать так
2. для отображения данных следует использовать DataAdapter, DataTable и привязку данных
1
8 / 8 / 0
Регистрация: 29.06.2013
Сообщений: 154
13.08.2014, 02:59  [ТС]
Learx, извините, там немного запутано.
По сути я уже подключался к БД таким методом и записывал в неё данные.
Теперь же надо эти данные извлечь, т.е. мне их даже в DataGridView выводить не надо, достаточно, чтобы программа "видела". Получается одна строка и обрабатывается (там всего 5 полей: id (auto_increment), поле вопросов, поле ответов, поле правильного ответа, а также url.). После обработки изменяется лишь одно поле - поле правильного ответа и всё. Как реализовать без коренного изменения программы?
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
13.08.2014, 12:02
1) чтоб изменить данные на БД вы должны создать запрос
2) чтоб создать запрос нужны данные
3) помимо того, что "видит" пользователь есть прочие данные, например значение ключевого столбца-идентификатора
4) для сохранения всех данных удобнее всего в данном случае использовать DataTable
5) вам необходимо обновить в БД только ИЗМЕНЕННЫЕ данные
6) при изменении данных в DataTable информация об изменении хранится в самом объекте DataTable
7) механизм привязки данных позволяет удобно отобразить информацию и при изменении данных в форме сохранить изменения в DataTable
8) для сохранения в БД нам надо проверить данные в DataTable(изменились ли данные) и создать запрос к БД,чтоб там сохранить изменения
9) DataAdapter автоматически использует нужный запрос и нужные данные из DataTable.

что имеем: мы должны хранить много данных, мы должны следить какие именно данные были изменены, мы должны вручную для каждой измененной строки создать свой запрос, передать в него нужные данные и выполнить запрос к БД.
теперь вопрос: вы хотите все это писать вручную или используете уже готовые инструменты, где все это уже реализовано?

Добавлено через 2 минуты
З.Ы. я вижу, что вы получаете не одну строку, а всю таблицу!!!
1
8 / 8 / 0
Регистрация: 29.06.2013
Сообщений: 154
14.08.2014, 08:55  [ТС]
Learx, изменение одного поля будет изменяться автоматически программой.
А как достать лишь одну строку для изменения?
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
14.08.2014, 12:13
Kirill_KZ,
T-SQL
1
SELECT * FROM iqaou where ...
добавить в запросе условие поиска строки. и то вы сами должны обеспечить возвращение одной строки(уникальным идентификатором,например)
если получаете одну строку, то можно и reader использовать, НО все равно следует сохранить как минимум идентификатор сттроки чтоб можно было составить запрос для обновления это строки.
1
8 / 8 / 0
Регистрация: 29.06.2013
Сообщений: 154
15.08.2014, 11:59  [ТС]
Learx
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
string mass = "1";
                MySqlCommand command = new MySqlCommand(); ;
                string connectionString, commandString;
                connectionString = "Database=" + WIT_DB + ";Data Source=" + WIT_IP + ";User Id=" + WIT_ID + ";Password=" + WIT_Password + ";charset=utf8";
                MySqlConnection connection = new MySqlConnection(connectionString);
                commandString = "SELECT uri * FROM iqaou where id='"+mass+"'+'";
                command.CommandText = commandString;
                command.Connection = connection;
                MySqlDataReader reader;
                try
                {
                    command.Connection.Open();
                    reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        string a = Convert.ToString(reader.GetValue(0));
                        MessageBox.Show(a);
                    }
                    reader.Close();
                }
                catch (MySqlException ex)
                {
                    Console.WriteLine("Error: \r\n{0}", ex.ToString());
                }
                finally
                {
                    command.Connection.Close();
                }
Объясните в чём проблема?
Сейчас не суть в том, чтобы всё было идеально и по правилам. Сейчас программа стоит на таком этапе работы, что "Главное, чтобы работало".
Будьте добры, помогите кодом.
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
15.08.2014, 12:28
а оно и не будет работать, или будет работать так,что потом при малейшем изменении доведется все переписывать.
вот такой вариант более-менее приемлем:
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
//поля класса
string  connectionString = @"Database=WIT_DB;Data Source=WIT_IP;User 
Id=WIT_ID;Password=WIT_Password;charset=utf8";
string commandString =  "SELECT uri FROM iqaou where id=@id";
string commandUpdate =  "Update iqaou Set uri=@uri where id=@id";
//....
//метод получения данных
int IdRow=1;
try
{
  string newData;
  using( MySqlConnection connection = new MySqlConnection(connectionString)
  {
     connection.Open();
     using(MySqlCommand command = new MySqlCommand(commandString, connection))
     {                
         command.Parameters.AddWithValue("@id", IdRow);
         Console.WriteLine(command.ExecuteScalar());
         Console.WriteLine("введите новое значение");
          newData = Console.ReadLine();
     }
     using(MySqlCommand command = new MySqlCommand(commandUpdate, connection))
     {     
         command.Parameters.AddWithValue("@id", IdRow);
         command.Parameters.AddWithValue("@uri", newData);
         command.ExecuteNonQuery();
     }
  }
}
catch (MySqlException ex)
{
   Console.WriteLine("Error: \r\n{0}", ex.ToString());
}
1
8 / 8 / 0
Регистрация: 29.06.2013
Сообщений: 154
15.08.2014, 14:14  [ТС]
Learx, я, конечно, сейчас неимоверно туплю, но при добавлении всего этого данного кода в пределы возможного размещения для кода кнопки, вылазит множество ошибок.
Хотелось бы отметить, что такие значения как connectionString формируются исходя из данных, переданных предыдущим окном, поэтому делать их статичными и добавлять их в начало кода как-то не разумно, с одной стороны.
Я не знаю даже что предположить, чтобы изменить код под рабочее состояние.
Прикрепил все ошибки. 1 ошибка даже и не ошибка, но она давно была - она моя
Миниатюры
Ошибка в коде вывода данных из MySQL таблицы  
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
15.08.2014, 17:37
Kirill_KZ, прошу прощения, пишу без редактора, но вы то могли добавить закрывающую скобку в строчку:
C#
1
 using( MySqlConnection connection = new MySqlConnection(connectionString)  )
Добавлено через 2 минуты
а чтоб динамически создать строку подключение из параметров можно воспользоваться MySqlConnectionStringBuilder
1
8 / 8 / 0
Регистрация: 29.06.2013
Сообщений: 154
16.08.2014, 15:53  [ТС]
Learx, выкидывает на catch...
Изменил код слегка, ибо я не в консоли всё пишу.
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 connectionString = @"Database=" + WIT_DB + ";Data Source=" + WIT_IP + ";User Id=" + WIT_ID + ";Password=" + WIT_Password + ";charset=utf8"; ;
string commandString =  "SELECT uri FROM iqaou where id=@id";
string commandUpdate =  "Update iqaou Set uri=@uri where id=@id";
//....
//метод получения данных
int IdRow=1;
try
{
  string newData;
  using( MySqlConnection connection = new MySqlConnection(connectionString))
  {
     connection.Open();
     using(MySqlCommand command = new MySqlCommand(commandString, connection))
     {                
         command.Parameters.AddWithValue("@id", IdRow);
         MessageBox.Show(Convert.ToString(command.ExecuteScalar()));
         MessageBox.Show("введите новое значение");
         newData = Convert.ToString("1");
     }
     using(MySqlCommand command = new MySqlCommand(commandUpdate, connection))
     {     
         command.Parameters.AddWithValue("@id", IdRow);
         command.Parameters.AddWithValue("@uri", newData);
         command.ExecuteNonQuery();
     }
  }
}
catch (MySqlException ex)
{
   MessageBox.Show("Error: \r\n{0}", ex.ToString());
}
0
8 / 8 / 0
Регистрация: 29.06.2013
Сообщений: 154
19.08.2014, 12:45  [ТС]
Learx, объясню немного подробней что и как я сделал с кодом, что он перестал работать.
connectionstring - добавил переменные, передающиеся из textbox'ов
Console.WriteLine(command.ExecuteScalar( )); - переделал на MessageBox, ведь я работа в WPF, а не в консоли. Думаю тут-то и есть загвоздка.
newData - передаётся значение ID сразу из массива. В данном случае, я решил вывести лишь 1ую строку, присвоив значение 1.
Ну вот и собственно всё.
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
19.08.2014, 17:22
Kirill_KZ, 0) в коде,который вы показали два раза объявляется переменная connectionString
1) покажите ошибку, которую выдает
2) у меня подозрение, что вы неверно строку подключения формируете.попробуйте так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
MySqlConnectionStringBuilder myCSB = new MySqlConnectionStringBuilder(); 
  //myCSB.Port = 3306; 
  myCSB.Host = WIT_IP; //"localhost"
  myCSB.Password = WIT_Password;  //....
  myCSB.UserId = WIT_ID; 
  myCSB.Direct = true; 
  myCSB.Compress = true; 
  myCSB.Database = WIT_DB; 
  myCSB.MaxPoolSize = 50;
  using( MySqlConnection connection = new MySqlConnection(myCSB.ConnectionString))
  { 
       //...
1
8 / 8 / 0
Регистрация: 29.06.2013
Сообщений: 154
20.08.2014, 20:59  [ТС]
Learx, вот в общем какие ошибки выскакивают.
Первый скриншот - скрин при изменении кода на ваш, где вы сомневаетесь со строкой подключения.
Второй скриншот - убрал try&catch. Оставил собственную строку подключения.
на stackoverflow нашёл подобную ошибку, но там делалось всё на локалке...
Миниатюры
Ошибка в коде вывода данных из MySQL таблицы   Ошибка в коде вывода данных из MySQL таблицы  
0
8 / 8 / 0
Регистрация: 29.06.2013
Сообщений: 154
25.08.2014, 17:26  [ТС]
Learx, будьте добры, подскажите в чём проблема.
Просто дальше не могу продолжить написание программы, загвоздка тут и всё...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.08.2014, 17:26
Помогаю со студенческими работами здесь

Создание таблицы ввода вывода из mysql
Добрый день, только начинаю заниматься изучением php и возник вопрос: как реализовать в php таблицу, чтобы верхняя строка была для ввода...

Ошибка в коде вывода символа на экран!
Здраствуйте, есть код программы на ассемблере. Работаю в тасм. Когда запускаю программу выдает ошибку, в которой не могу разобратся..... ...

Синтаксическая ошибка в коде для вывода меню
echo off echo Begin create files for /L %%i in (1,1,5) do ( echo test > %1\%%i.txt echo test > %1\%%i.doc echo test >...

Ошибка в коде вывода двухмерного массива через функию
Вот код #include <iostream> #include <ctime> void Print_Arr(int *ptr_arr, const int size = 5, const int n = 4); void...

Нет вывода из базы данных PHP из MYSQL
Добрый день не могу получить данные из таблицы код $query2 = sprintf('SELECT value FROM '.DB_PREFIX.'setting WHERE \'key\' =...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
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
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru