ComSDK
 Указатель Классы Пространства имен Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Группы Страницы
Классы | Открытые типы | Открытые члены | Полный список членов класса
Класс com::sql::SqlTable

Модель 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 ForeignKeygetForeignKey (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 

Часть внешнего ключа

Тип значение колонки

Элементы перечислений
vtUnknown 

Неизвестный тип (строка подразумевается)

vtNumeric 

Вещественное число

vtString 

Строка

vtBool 

Булевский тип

vtTimestamp 

Время/дата

vtInt 

Целое число

Методы

int com::sql::SqlTable::deleteRow ( int  pRow)

Удаляет строку

Необходимо сделать:
Переработать метод, возвращаемое значение не должно быть таким
const com::sql::SqlTable::ForeignKey & com::sql::SqlTable::getForeignKey ( int  pCol) const

Возвращает внешний ключ по индексы колонки

Необходимо сделать:
метод бессмысленный и работает неверно (+ нет проверок). Нужно переработать механизм FK. На данный момент ориентироваться нужно на тип колонки (ДОЛЖЕЕН быть FK для подходящего случая)
bool com::sql::SqlTable::setContent ( int  pCol,
int  pRow,
const std::string &  pValue 
)

Задает значение по строке и колонке

Необходимо сделать:
Нерабочая функция, надо доделать

Объявления и описания членов классов находятся в файлах: