Создать базу данных и настроить подключение проекта к MySQL.
Дата отправки отчёта:
5 декабря 2018 г.
Задание выполнено: за
3 час. 31 мин.
Чему научился:
Научился подключаться к базе данных MySQL, выполнять к ней запросы. Переписал код, использующий SQLite на код для MySQL. В итоге, получилась такая же программа, но для разнообразия, с другими оценками.
Если я правильно понял, проект был заморожен и этот урок был через полгода после предыдущего. Я ожидал здесь увидеть реализацию функций учителя, но её нет, вместо неё проект переписывается для MySQL. Причём, нет урока по установке и настройке этой базы данных. Я это сделал самостоятельно, по случайности на первом уроке, когда выбирал базу данных. Случайность оказалась полезной :) Но у других формулистов могут возникнуть проблемы, поэтому имело бы смысл добавить урок по установке базы перед этим уроком.
Научился: Устанавливать дополнение .net mysql
Находить ошибки. Трудности: Разобраться с подключением. Подключение проходило, а я тупил, пока не поменял другой логин и не получил ошибку, что такого пользователя нет.
А ошибка была в выполнении функции public MySqlDataReader Select(string query), где я забыл передать аргументы в MySqlCommand cmd = new MySqlCommand(this.query, connection);
Теперь не могу понять ошибку на скриншота. Какой где датаридер открыт?
Ошибка в private void load_pupil_matrix() после ввода пароля ученика. Отрисовывается грид с уроками, а оценки не вставляет. Запрос сырой отрабатывает правильно и выдает 2 строки.
Ошибка где-то тут при чтении.
do read = sql.Select("SELECT subject_id, day, point FROM point WHERE pupil_id =" + my_pupil_id.ToString());
while (db_error());
while (read.Read()) Надо было всетаки сделать с самого нуля с сетевой бд, акцесс никто не использует.
upd
Внезапно стал смотреть работы по этому курсу у других и у Tekashnik нашел ответ.
Оказывается надо после
MySqlDataReader read;
read = sql.Select("SELECT id, subject FROM subject ORDER BY subject");
while (db_error()) ;
int row = 0;
while (read.Read())
{
grid_points_pupil.Rows.Add();
grid_points_pupil["co_subject_ids", row].Value = read["id"].ToString();
grid_points_pupil["co_points_subjects", row].Value = read["subject"].ToString();
row++;
}
добавить read.Close();
А я добавлял
do sql.Close();
while (db_error());
И вот как я должен был догадаться?
Научился: хороший урок, научился создавать структуру БД в MySQL, через консоль Трудности: надеюсь, идея по созданию раздела консольных задач по БД, будет реализована.