ComSDK
|
Модель SQL-таблицы Подробнее...
#include <sqltable.h>
Классы | |
struct | Constraints |
struct | ForeignKey |
Внешний ключ Подробнее... | |
struct | TableColumn |
Открытые типы | |
enum | ColumnType { ctOrdinary, ctPrimaryKey, ctForeignKey } |
enum | ValueType { vtUnknown, vtNumeric, vtString, vtBool, vtTimestamp, vtInt } |
Тип значение колонки Подробнее... | |
Открытые члены | |
SqlTable (const SqlTable &pSQLTable) | |
std::string | getTableName () const |
Возвращает имя таблицы | |
std::string | getSchemaName () const |
Возвращает имя схемы | |
std::string | getDatabaseDescriptor () const |
Возвращает дескриптор базы данных, где хранится таблица | |
std::string | getTableFullName () const |
Возвращает полное имя таблицы вида @дескриптор БД@имя схемы@имя таблицы | |
std::string | getTableDescription () const |
Возвращает описание таблицы | |
int | getColumnsCount () const |
Возвращает количество колонок | |
int | getRowsCount () const |
Возвращает количество строк | |
std::string | getContent (int pCol, int pRow) const |
Возвращает значение в строке pRow и колонке pCol. | |
std::string | getContent (const std::string &pCol, int pRow) const |
Возвращает значение в строке pRow и колонке pCol. | |
std::string | getColumnName (int pCol) const |
Возвращает имя колонки по ее индексу | |
std::string | getColumnFullName (int pCol) const |
Возвращает полное имя колонки в формате @полное имя таблицы@имя колонки@ по ее индексу | |
const std::list< int > & | getPKAttrIndexes () const |
Возвращает индексы колонок, соответствующие первичному ключу таблицы | |
int | getColumnIndexByName (const std::string &pColName) const |
Возвращает индекс колонки по имени | |
std::string | getColumnDescription (int pCol) const |
Возвращает описание колонки | |
ColumnType | getColumnType (int pCol) const |
Возвращает тип колонки | |
ValueType | getValueType (int pCol) const |
Возвращает тип значения колонки | |
const ForeignKey & | getForeignKey (int pCol) const |
std::list< int > | find (const std::map< int, std::string > &pParams) const |
Ищет строки по маппингу @индекс колонки@ -> @значение | |
void | setTableName (const std::string &pTableName) |
Задает имя таблицы | |
void | setSchemaName (const std::string &pSchemaName) |
Задает имя схемы | |
void | setDatabaseDescriptor (const std::string &dd) |
Задает дескриптор базы данных | |
void | setTableDescription (const std::string &pTableDescr) |
Задает описание таблицы | |
void | setFormat (int pColumnsCount, int pRowsCount, bool pEmpty) |
Создаёт "разметку" таблицы. При pEmpty == true присваивает всем значениям пустые строки | |
void | setColumnName (int p_col, const std::string &p_name) |
Задает имя колонки | |
void | setColumnType (int p_col, ColumnType p_colType) |
Задает тип колонки | |
void | setValueType (int p_col, ValueType p_valType) |
Задает тип значения колонки | |
bool | setColumnData (int p_col, const std::string &p_name, ColumnType p_colType, ValueType p_valType, const std::string &p_domainName="", int p_maxLen=INT_MAX, const std::string &p_descr="") |
Задает информацию о колонке | |
bool | setContent (int pCol, int pRow, const std::string &pValue) |
bool | setContent (const std::string &p_col, int p_row, const std::string &p_value) |
Задает значение по строке и колонке | |
bool | setContent (int p_row, std::map< int, std::string > &p_values) |
Задает значение по строке и маппингу @индекс колонки@ -> @значение | |
bool | insertRow (const std::map< int, std::string > &pValues) |
Вставляет строку со значениями в маппинге @индекс колонки@ -> @значение | |
bool | insertColumn (const std::string &pName, const std::string &pDescription, const std::string &pDomainName, ColumnType pColumnType, ValueType pValueType, int pMaxLength) |
Вставляет колонку с указанной информацией | |
void | addEmptyRow () |
Вставляет пустую строку | |
int | deleteRow (int pRow) |
std::string | makeUpUpdateRequest (int pRow, const std::map< int, std::string > &pChangedValues) |
Возвращает update-запрос, соответствующий изменениям в строке pRow по маппингу @индекс колонки@ -> @значение | |
std::string | makeUpInsertRequest (const std::map< int, std::string > &pValues) |
Возвращает insert-запрос, соответствующий добавлению строки по маппингу @индекс колонки@ -> @значение | |
std::string | makeUpDeleteRequest (int pRow) |
Возвращает delete-запрос, соответсвующий удалению строки pRow. | |
std::string | makeUpSelectRequest (const std::map< int, std::string > &pValues) |
Возвращает select-запрос, соответствующий выборке по маппингу @индекс колонки@ -> @значение | |
int | findRow (const std::string &p_colName, const std::string &p_value) const |
Возвращает (первую) строку, в которой колонка p_colName имеет значение p_value. | |
int | findRow (const std::map< std::string, std::string > &p_attrsAndValues) const |
Возвращает (первую) строку, соответствующей маппингу @имя колонки@ -> @значение колонки | |
int | findRow (const std::string &pCommaSeparatedPKValues) const |
Возвращает (первую) строку, значение первичного ключа которого соответсвует строке вида "@значение первой колонки ПК@, @значение второй колонки ПК@, ...". | |
std::vector< int > | findRows (const std::string &p_colName, const std::string &p_value) const |
Возвращает все строки, в которой колонка p_colName имеет значение p_value. | |
std::vector< int > | findRows (const std::map< std::string, std::string > &p_attrsAndValues) const |
Возвращает все строки, соответствующих маппингу @имя колонки@ -> @значение колонки | |
bool | isEmpty () const |
Проверяет, является ли таблица пустой | |
bool | addAttrToPK (const std::string &p_attrName) |
Добавляет колонку с именем p_attrName в первичный ключ | |
void | addForeignKey (int p_col, const std::string &p_refSchema, const std::string &p_refTable, int p_refCol) |
Добавляет внешний ключ на колонку p_col, ссылающийся на схему p_refSchema, таблицу p_refTable и колонку p_refCol в ней | |
int | getPKCount () const |
Возвращается число колонок в составном первичном ключе | |
bool | attrExists (const std::string &p_attrName) const |
Проверяет, существует ли колонка c именем p_attrName. | |
std::string | getColumnDomain (int p_col) const |
Возвращает домейн значения колонки | |
int | getColumnLength (int p_col) const |
Возвращает максимальную длину значения колонки | |
Модель SQL-таблицы
Основной класс для хранения SQL-таблиц. Является моделью в MVC паттерне. Поддерживаются составные первичные ключи, внешние ключи, основные типы данных (включая проверку валидности значений). Поддерживается формирование select, update, insert, delete запросов. Строки и колонки нумеруются от 0 до N. Соответствующее число называется индексом строки/колонки.
Нужно продумать добавление FK и PK к таблице, чтобы это гармонично вливалось в структуру данных.
Нужно сделать swap метод, актуально в DatabaseManager.
Необходимо сделать автоматическое отслеживание изменений, чтобы потом формировать из них запросы.
Нужен переход к итераторам. Мотивирующий пример есть в DbAccess, там активная работа с таблицами.
Нужно создать RawTable и отнаследоваться от него, аналог есть в comwpc.
После реализации RawTable нужно сделать CompositeTable, где можно было бы делать мердж таблиц.
Тип колонки
Элементы перечислений | |
---|---|
ctOrdinary |
Обычная |
ctPrimaryKey |
Часть первичного ключа |
ctForeignKey |
Часть внешнего ключа |
int com::sql::SqlTable::deleteRow | ( | int | pRow | ) |
Удаляет строку
const com::sql::SqlTable::ForeignKey & com::sql::SqlTable::getForeignKey | ( | int | pCol | ) | const |
Возвращает внешний ключ по индексы колонки
bool com::sql::SqlTable::setContent | ( | int | pCol, |
int | pRow, | ||
const std::string & | pValue | ||
) |
Задает значение по строке и колонке