Новость из категории: Информация

Ultimate++: схемы баз данных

Содержание:
1. Сессии и объекты запросов;
2. SqlExp;
3. Схемы баз данных (Вы читаете данный раздел);
4. Виджеты для работы с базами данных.
Ultimate++: схемы баз данных

Объекты SqlExp кардинально облегчают создание запросов, но создание самих таблиц и определение объектов SqlId для всех их колонок остается трудоемким делом. Для автоматизации этих рутинных задач в U++ предусмотрены так называемые схемы баз данных (Database Schema). Идеология схем аналогична идеологии компоновок для создания графического интерфейса. Схема определяется в специальном sch-файле, который представляет собой последовательность особых макросов С++. Этот файл напрямую включается в программу директивой #include. Макросы в файле схемы автоматически генерируют весь код, необходимый для создания таблиц, определяют необходимые переменные и дают ряд дополнительных возможностей. Этот подход аналогичен включению в программу lay-файлов, в которых тоже автоматически генерируется нужный код с помощью специальных макросов.
Создадим файл db.sch со схемой нашей простой базы:
TABLE _ (TEST)
INT _ (A)
STRING _ (B, 200)
END _ TABLE

Схемы предельно понятны и очень легко читаются. Имена, объявленные в макросах, оканчивающихся на «_», автоматически становятся объектами SqlId, доступными в основной программе. Тот же макрос, но без «_», не создает объект SqlId, но в остальном работает точно так же. Таким образом, наша схема позволяет не только автоматически создать таблицу, но и полностью заменяет объявление:
SqlId A("A"), B("B"), TEST("TEST");

которое теперь нужно удалить из кода. Представьте, сколько времени это экономит для сложных таблиц и скольких дурацких ошибок позволяет избежать! Подключить схему к программе нужно перед CONSOLE_APP_MAIN такими строками:
// Используем «диалект» схем для SQLite3
#define SCHEMADIALECT
// Подключаем созданный файл схемы. MyDbExample — имя проекта
#define MODEL
// Подключаем стандартные заголовки для обработки схем #include "Sql/sch _header.h" #include #include

Выглядит достаточно сложно, но сделать это нужно только один раз. Теперь удалим строку, где таблица создается вручную:
db.Execute("create table TEST (A INTEGER, B TEXT)");

И вместо нее напишем:
SqlSchema sch(SQLITE3); // Создать объект схемы
// Создать таблицы
All _Tables(sch);
SqlPerformScript(sch.Upgrade());
SqlPerformScript(sch.Attributes());

Теперь таблица создается автоматически согласно схеме. Этот код выглядит громоздким для одной простой таблицы, но если схема, скажем, определяет сотню очень сложных таблиц, то написать нужно эти же три строки без каких-либо изменений.

Ну, а если Вы не программист, а азартный игрок, которого совершенно не интересует Ultimate++, тогда вот Вам отличный сайт о покере (http://pokerskill.ru/) - pokerskill.ru. Представленные здесь материалы позволят Вам отточить навыки своей игры и даже перейти в класс профессиональных покеристов!
Ultimate++: схемы баз данных

Существует еще одна мощная возможность, предоставляемая схемами. Для каждой таблицы автоматически создается структура (struct) с именем S_таблица. Она соответствует одной строке в таблице, а ее поля имеют те же имена, что столбцы таблицы. Эти структуры можно использовать в выражениях SqlExp и методе Fetch. Например:
S _ TEST t;
for(int i = 0; i < 10;
t.A = i;
t.B = AsString(i*i);
db * Insert(t); // Вставить запись t в таблицу
}
db * Select(t).From(TEST).Where(A<5 && B!=4);
while(db.Fetch(t)) // Получить следующую строку результата в t
Cout() << t.A << " '" << t.B << "'n";

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

Рейтинг статьи

Оценка
5/5
голосов: 1
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх