Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

БД - Управление гостиницей / Модель. Список заказов.

  • На этом уроке мы допишем два последних метода в класс Book.
    Методы для получения списка заказов по фильтру и без.
    В конце урока выведем результаты в грид,
    чтобы убедиться, что код работает.
  • Дата отправки отчёта: 10 февраля 2016 г.
  • Задание выполнено: за 1 час. 13 мин.
  • Чему научился: закрепил знания
  • Что было сложным: Провозился с ошибкой, которая возникает при поиске по букингу кириллицей - "illegal mix of collations for operation like". В интернете советуют поменять кодировку и я все проверил. Изменил кодировку бд и нескольких таблиц на utf8_general_ci (там в самом деле какая-то другая стояла), пересоздал строки, но ошибка не исчезла (((
  • Комментарии: а в видео все нормально работает..
  • Оценка видео-уроку:
Отчёт от 3664 за БД - Управление гостиницей / Модель. Список заказов.


Отчёт от 3664 за БД - Управление гостиницей / Модель. Список заказов.




Оцени работу

 
Сохранить страницу:

6452. --
Кирилл Шмойлов
Кирилл Шмойлов
ответить
→  данила  # БД - Управление гостиницей / Модель. Список заказов. / 2016-02-10 04:04

при подключении к базе в методе подключения у тебя стоит utf8 ?
        public MySQL(string connect1)
        {
            connect = connect1 + "charset=utf8;";
        }


3664. --
данила
данила
ответить
→  Кирилл Шмойлов  # БД - Управление гостиницей / Модель. Список заказов. / 2016-02-10 13:39

Посмотрел, стоит:
  this.connectionString =
                "SERVER=" + host +
                ";DATABASE=" + baze +
                ";UID=" + user +
            // ";PASSWORD=" + pass +
                ";CHARSET=utf8;";


6452. --
Кирилл Шмойлов
Кирилл Шмойлов
ответить
→  данила  # БД - Управление гостиницей / Модель. Список заказов. / 2016-02-10 17:19

всё понятно, я нашел ошибку
у тебя идет сравнение  числа и текста
когда ты сравниваешь STATUS (это текст) и "Русские буквы" это нормально
а когда ты сравниваешь Till_Day (это дата) и "Русские буквы" - это ошибка
когда ты сравниваешь Adults (это число) и "Русские буквы" - это тоже ошибка


3664. --
данила
данила
ответить
→  Кирилл Шмойлов  # БД - Управление гостиницей / Модель. Список заказов. / 2016-02-10 18:28

Когда сравниваешь с числом ошибки не возникает, просто результат сравнения false - проверено.
Все из-за типа DateTime, но если его исключить, то по дате нельзя будет искать. В уроке ведь точно также все с числами и с датой работает


2146. --
Иван
Иван
ответить
→  данила  # БД - Управление гостиницей / Модель. Список заказов. / 2016-02-10 20:55

Уверен, что удастся разобраться с ошибкой.



5565. --
Frank
Frank
ответить
→  данила  # БД - Управление гостиницей / Модель. Список заказов. / 2016-02-11 12:44

Возможно при установке ты не настраивал кодировку, если так то
Открой конфиг mysql - my.ini И добавь [mysqld] character-set-server = utf8


5565. --
Frank
Frank
ответить
→  данила  # БД - Управление гостиницей / Модель. Список заказов. / 2016-02-11 12:56

Еще один совет - попробуй в поиске ввести, не так like '%Что-то для поиска%', а вот так like '%то-то для поиска%'
Без верхнего регистра + половина слова кароче. Так как ты используешь два процента, очень глупо искать слово целиком , естественно будет выходить ошибка. Попробуй и после напиши
Удачи


3664. --
данила
данила
ответить
→  Frank  # БД - Управление гостиницей / Модель. Список заказов. / 2016-02-11 13:12

открыл, добавил, не помогло


6452. --
Кирилл Шмойлов
Кирилл Шмойлов
ответить
→  данила  # БД - Управление гостиницей / Модель. Список заказов. / 2016-02-12 11:44

чтобы тебе совсем не думать, скидываю код
                book = this.sql.Select(
                    "select client_id, client, book_date, from_day, till_day," +
                            " adults, childs, status, b.info" +
                    " from book b" +
                    " left join client c on b.client_id=c.id" +
                    " where " +
                    "    client like '%" + f + "%'" +
                    " or book_date like '%" + f + "%'" +
                    " or from_day like '%" + f + "%'" +
                    " or till_day like '%" + f + "%'" +
                    " or adults like '" + f + "'" +
                    " or childs like '" + f + "'" +
                    " or status like '" + f + "'" +
                    " or b.info like '%" + f + "%'" +
                    " order by book_date" +
                    "");
обращаю ЕЩЁ РАЗ твоё внимание на сравнение с ЧИСЛОВЫМИ полями, в них не добавляется знак %.
удачи!


3664. --
данила
данила
ответить
→  Кирилл Шмойлов  # БД - Управление гостиницей / Модель. Список заказов. / 2016-02-12 12:35

Может % там и не нужен, но на ошибку это не влияет




Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Получил опыт в программировании
Трудности: Эти задания я еще выполнил на предыдущих уроках.
Спасибо за урок!


Научился: практика в написании запросов
два этих метода были уже написаны имною на прошлых уроках. Переделал их с соединением таблицы Clinet и добавлением поля Client в результирующий набор