# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Запись первого вебинара по базам данных. Проектирование и создание базы данных "Книжка оценок". Отчёт отправил: 10588. kalobyte Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Искать настройки sql запроса в меню акцесса. Сложности: Найти настройки в акцессе, чтобы появилось окно ручного запроса. Комментарии: Я давно учил бд и даже сам пришел к вопросу нормализации бд, о чем и узнал при чтении. В пту тоже делали акцесс и другие базы, но все быстро и без привязки к приложениям. Я так за все время и не написал ничего. У меня лютый страх сделать неправильные связи и со временем запороть базу. Кроме того я так и не понял, зачем делать join, если создается связь через условия where. Толком нигде не рассказывается, почему в этой ситуации надо связь 1 к н, в другой н к 1, а где н к м. Что там про связанное удаление? Я так опять и не понял, но интуитивно ощущал, что должны быть эти связи по ключам на уровне самой базы. Т.е. база не должна дать мне ввести просто данные в одно поле, если оно связано с другим. Этот вопрос опять нигде не описывается. То ли надо самому за этим следить, то ли нет. Если самому, то зачем тогда все эти связи? Есть бд без связей, только тупо для хранения типа mongodb. Я прослушал курс по mysql от специалиста, курс годный, но почему-то я так ничего и не стал делать. А в этом уроке я даже установил акцесс, нашел кнопку и руками вводил запросы. Опять магия какая-то. |
|||||
2 | Создание интерфейса программы |
|
|||
Создаём интерфейс программы "Книжка оценок" и подключаем его к базе данных. Файл для скачивания и установки: http://www.microsoft.com/en-us/download/details.aspx?id=5793 Отчёт отправил: 10588. kalobyte Выполнено за 5 час. 00 мин. [Показать отчёт] Научился: Работа с datagrid. Сложности: Ошибки находить. Так и не понял, где у меня тут ошибка id = int.Parse(sql.Scalar("SELECT MAX(id) FROM subject")) + 1; Комментарии: Запутался среди этих кнопок. Интерфейс получился нелогичный. Как-то все криво сделано. Должно быть поле для добавки и кнопка для добавки. Не долно быть поля для изменения, изменение должно делаться при двойном клике на строчку в таблице. Короче я так и не понял, почему у меня исключение выходит. В переменной id все равно 0, а запрос непонятно что возвращает. Кроме того вставка не должна прибавлять 1, это тип поле id должен быть автоинкремент и будет сам увеличиваться. Не думал, что так все сложно будет. Чуть не сдох в первый день, а сейчас я доделываю спустя пару дней. Сделал пометки тогда и решил после отдыхать поискать, может на свежую башку чего полезного. А так и не понял это исключение. |
|||||
3 | Авторизация школьников и учителя |
|
|||
1. Составить таблицу с паролем учителя. CREATE TABLE teacher (id int primary key, teacher varchar(99), password varchar(99)); 2. Добавить учителя. INSERT INTO teacher VALUES (1, 'Magic', 'Teacher'); 3. Сделать форму залогинивания. 3а. Считать список учеников и поместить его в комбо-бокс. SELECT id, pupil FROM pupil ORDER BY pupil 3б. Заполнить массив arr_pupil_id чтобы знать номер выбранного ученика. 4. Проверить введённый логин и пароль. 5. Ограничить доступ к остальным вкладкам в зависимости от логина и пароля. Отчёт отправил: 10588. kalobyte Выполнено за 4 час. 00 мин. [Показать отчёт] Научился: Как сделать логин и переключаться в нужные разделы после авторизации. Сложности: Код с while (db_error()); в разных местах портит все. Нужно втыкать эти заглушки в правильные места, иначе будет только мешать. Сложным было понять механизм авторизации ученика. Я знаю, как это делать в вебе, а тут комбо бокс не содержит ид учеников и пришлось лепить массив с идентификаторами. Комментарии: В целом нормально. Паврда я этот урок 3 дня тянул. Мои представления о структуре проги не совпадали с роликом, а когда ты вроде бы понимаеш механизм, но видиш совсем не так, как представляеш, то очень сложно понять, что там думает другой человек. Если же для тебя это с нуля, то все воспринимается как должное. Но цель этого урока - взаимодействие с бд, а не проектирование приложения. Я думаю в управлении гостинницей это будет. Вроде ничего сложного нет, а столько сил я потратил. |
|||||
4 | Сетка оценок ученика |
|
|||
Создаём сетку с оценками учеников. Отчёт отправил: 10588. kalobyte Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Заполнять грид. Сложности: Собственно его заполнять. Все эти алгоритмы в циклах. Комментарии: Не зря я боялся начинать работу с гридом и бд самостоятельно. Тут час видео растянулся на 3 часа, а эти 3 часа растянулись на 2 или 3 дня. Пока все ошибки отловиш. Хотя я себе это несколько иначе представлял. Или вот я не представляю себе вид вкладки "оценки класса". По всем предметам или там выбирать учитель может? Если по всем, то что с датами? |
|||||
5 | Подключение проекта к MySQL |
|
|||
Создать базу данных и настроить подключение проекта к MySQL.
Отчёт отправил: 10588. kalobyte Выполнено за 4 час. 00 мин. [Показать отчёт] Научился: Устанавливать дополнение .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()); И вот как я должен был догадаться? |
|||||
6 | ФИНАЛЬНЫЙ УРОК |
без видео |
|||
Поздравляю с завершение видеокурса! Напиши свой отзыв об этом курсе, что понравилось, что было сложным, что можно сделать лучше. Какой курс ты будешь проходить следующим? Отчёт отправил: 10588. kalobyte Выполнено за 10 мин. [Показать отчёт] Научился: Подключаться к файловым и сетевым бд. Работать с датагридом. Раньше для меня он казался сложным и я не знал, как к нему подлезть. Ну и соединение и получение данных к мускулу как-то сложнее по сравнению с пхп. Сложности: Искать ошибки. Прога перевалила за 500 строк в обоих файлах. Потом еще создавал бд и почему-то по дефолту у меня кодировка латин1 была, а я думал ут8 и поля в таблицах создались не в той кодировке, а я даже не знал, что поля отдельно можно менять кодировку. Я ведь для всей базы и даже для таблиц поменял, а все равно вопросы вместо букв показывались. Целый час убил. Комментарии: В этом курсе надо было больше уделить сетевой базе и делать ее в специальной проге, так быстрее и проще. Запросы тоже лучше писать в этой проге. Почему-то все преподающие бд так и норовят использовать неудобные инструменты. Так же надо было наверное разобрать датагрид, он довольно сложный. Да и некрасивый он совсем. Я скачал платный Devexpress они вроде бы недавно сделали его бесплатным для открытых проектов или это может быть только веб версия хтмл, впф платная наверное. Изучал курс с бд для написания своей проги, чтобы иметь базу клиентов, шаблоны для генерации пдф и выписывать счета клиентам с автоматической отправкой пдф им на почту. Хотел на пхп написать, но как по мне, то лучше у себя хранить или потом сделать веб версию с rest api. Следущий курс будет или телефонная книга (вроде видел его) или база отеля (лежит в закладках). |
|||||
7 | Проектирование базы данных в Microsoft Excel |
|
|||
8 | Проектирование базы данных в Microsoft Access |
|
|||
9 | Создание интерфейса первой вкладки |
|
|||
10 | Подключение БД Access к коду C# |
|
|||
11 | Обработчик ошибок |
|
|||
12 | Манипуляции с предметами |
|
|||
13 | Делаем таблицу для учителя |
|
|||
14 | Логин для школьника |
|
|||
15 | Логин для учителя |
|
|||
16 | Составление плана сетки оценок ученика |
|
|||
17 | Формирование сетки оценок ученика |
|
|||
18 | Загрузка оценок ученика в матрицу |
|
|||
Итого: 18 видеоуроков |
10 час. 33 мин. |
2 чел. | |||
Финалисты: Chip, Max . |