Ananas Library 0.9.5
Класс aDatabase

Класс для работы с СУБД. Ananas Data Abstraction Layer. Наследует QObject. Подробнее...

#include <adatabase.h>

Граф наследования:aDatabase:

Открытые типы

enum  DBPermission {
  DBP_NoAccess = 0 , DBP_View = 1 << 0 , DBP_Update = 1 << 1 , DBP_Insert = 1 << 2 ,
  DBP_Delete = 1 << 3 , DBP_Execute = 1 << 4 , DBP_TurnOn = 1 << 5 , DBP_TurnOff = 1 << 6 ,
  DBP_All = 0xFFFF
}
enum  dbServer {
  unknown , mysql , postgresql , odbc ,
  oracle , mssql , sybase , unknown ,
  mysql , postgresql , odbc , oracle ,
  mssql , sybase
}
 Перечисление поддерживаемых типов баз данных. По состоянию на 20070630 реализована поддержка для mysql и postgresql . Подробнее...
enum  dbServer {
  unknown , mysql , postgresql , odbc ,
  oracle , mssql , sybase , unknown ,
  mysql , postgresql , odbc , oracle ,
  mssql , sybase
}

Сигналы

void refresh ()

Открытые члены

 aDatabase ()
 ~aDatabase ()
bool init (aCfgRc *rc, const QString &dbname=QString::null)
 Открывает соединение с базой данных на SQL сервере или создает базу данных.
bool init (const QString &rcname, const QString &dbname=QString::null)
 Creates database on SQL server. This is overloaded method, provided for convenience.
bool prepareDatabaseConnect (aCfgRc *rc)
 Инициализирует драйвер sql соединения.
void done ()
QSqlDatabase * db (const QString &dbname=QString::null)
 Возвращает ссылку на соединение с базой данных.
bool checkStructure ()
bool create ()
bool drop (const QString &)
bool update ()
Q_ULLONG uid (int otype)
int uidType (Q_ULLONG uid)
aDataTabletable (const QString &name=QString::null)
bool tableExists (const QString &name)
void markDeleted (Q_ULLONG uid)
void deleteMarked ()
QString driverName ()
bool isAccessRights (int md_type, Q_ULLONG obj_id, DBPermission req_operation)
bool exchangeDataSystables (QDomDocument &xml, bool import)
bool exchangeDataCatalogues (QDomDocument &xml, bool import)
bool exchangeDataDocuments (QDomDocument &xml, bool import)
bool exchangeDataJournals (QDomDocument &xml, bool import)
bool exchangeDataInfoRegisters (QDomDocument &xml, bool import)
bool exchangeDataAccumulationRegisters (QDomDocument &xml, bool import)
bool exchangeDataUniques (QDomDocument &xml, bool import)
bool transaction ()
bool commit ()
bool rollback ()
QStringList users ()
int loginUsersCount ()
bool login (const QString &username, const QString &password, int applicationId=0)
void logout ()
void netupdate ()
bool isObjectLocked (Q_ULLONG id)
bool objectLock (Q_ULLONG id)
void objectUnlock (Q_ULLONG id=0)
int rolePermission (int role_id, int md_id)
void setRolePermission (int role_id, int md_id, int new_permission)
bool init (aCfgRc *rc, const QString &dbname=QString::null)
bool init (const QString &rcname, const QString &dbname=QString::null)
void done ()
QSqlDatabase * db (const QString &dbname=QString::null)
bool checkStructure ()
bool create ()
bool drop (const QString &)
bool update ()
Q_ULLONG uid (int otype)
int uidType (Q_ULLONG uid)
aDataTabletable (const QString &name=QString::null)
bool tableExists (const QString &name)
void markDeleted (Q_ULLONG uid)
void deleteMarked ()
QString driverName ()
bool exchangeDataSystables (QDomDocument &xml, bool import)
bool exchangeDataCatalogues (QDomDocument &xml, bool import)
bool exchangeDataDocuments (QDomDocument &xml, bool import)
bool exchangeDataJournals (QDomDocument &xml, bool import)
bool exchangeDataInfoRegisters (QDomDocument &xml, bool import)
bool exchangeDataAccumulationRegisters (QDomDocument &xml, bool import)
bool exchangeDataUniques (QDomDocument &xml, bool import)

Открытые статические члены

static QStringList supportedDriverList ()
static QStringList getUniqueIndices (const QString &flddef)
static QString tableDbName (aCfg &md, aCfgItem context, long *tid)
static QString tableDbName (aCfg &md, aCfgItem context)
static aDatabasedatabase ()
static QStringList supportedDriverList ()
static QStringList getUniqueIndices (const QString &flddef)
static QString tableDbName (aCfg &md, aCfgItem context, long *tid)
static QString tableDbName (aCfg &md, aCfgItem context)

Открытые атрибуты

aCfg cfg
 Объект для работы с метаданными бизнес схемы Ананаса. .
QDataSchema * qds
QSqlDatabase * ddb

Защищенные члены

void timerEvent (QTimerEvent *)

Подробное описание

Класс для работы с СУБД. Ananas Data Abstraction Layer. Наследует QObject.

Обеспечивает унифицированный программный интерфейс доступа к данным, независимый от используемой СУБД. Используется для работы с базой данных в контексте бизнес схемы.

Перечисления

◆ dbServer [1/2]

Перечисление поддерживаемых типов баз данных. По состоянию на 20070630 реализована поддержка для mysql и postgresql .

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

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

mysql 

MySQl драйвер

postgresql 

PostgreSQL драйвер

odbc 

ODBC драйвер (не поддерживается)

oracle 

Oracle драйвер (не поддерживается)

mssql 

MSSQL драйвер (не поддерживается)

sybase 

Sybase драйвер (не поддерживается)

unknown 

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

mysql 

MySQl драйвер

postgresql 

PostgreSQL драйвер

odbc 

ODBC драйвер (не поддерживается)

oracle 

Oracle драйвер (не поддерживается)

mssql 

MSSQL драйвер (не поддерживается)

sybase 

Sybase драйвер (не поддерживается)

◆ dbServer [2/2]

перечисление типов баз данных

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

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

mysql 

MySQl драйвер

postgresql 

PostgreSQL драйвер

odbc 

ODBC драйвер (не поддерживается)

oracle 

Oracle драйвер (не поддерживается)

mssql 

MSSQL драйвер (не поддерживается)

sybase 

Sybase драйвер (не поддерживается)

unknown 

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

mysql 

MySQl драйвер

postgresql 

PostgreSQL драйвер

odbc 

ODBC драйвер (не поддерживается)

oracle 

Oracle драйвер (не поддерживается)

mssql 

MSSQL драйвер (не поддерживается)

sybase 

Sybase драйвер (не поддерживается)

Конструктор(ы)

◆ aDatabase()

aDatabase::aDatabase ( )

Конструктор без параметров.

◆ ~aDatabase()

aDatabase::~aDatabase ( )

Деструктор.

Перекрестные ссылки done().

Методы

◆ checkStructure()

bool aDatabase::checkStructure ( )

проверяет структуру базы данных.

Возвращает
true, если база данных корректна

проверяет структуру базы данных. Не реализована.

Возвращает
true, если база данных коррестна

◆ create()

bool aDatabase::create ( )

Вспомогательный метод. Создает новую базу данных.

См. также
createdb()

◆ db()

QSqlDatabase * aDatabase::db ( const QString & dbname = QString::null)

Возвращает ссылку на соединение с базой данных.

Аргументы
dbname(in) - имя базы данных
Возвращает
соединение с базой данных. Возвращаемый объект удалять не следует.

Возвращает ссылку на соединение с базой данных.

Аргументы
dbname(in) - имя базы данных.
Возвращает
соединение с базой данных

Используется в deleteMarked(), done(), driverName(), init(), aExtSQL::init(), markDeleted(), uid() и uidType().

◆ deleteMarked()

void aDatabase::deleteMarked ( )

Удаляет все помеченные записи.

См. также
markDeleted(Q_ULLONG uid)

Перекрестные ссылки db().

◆ done()

void aDatabase::done ( )

Закрывает соединение с базой данных и освобождает все занятые ресурсы.

Перекрестные ссылки db().

Используется в prepareDatabaseConnect() и ~aDatabase().

◆ driverName()

QString aDatabase::driverName ( )

Возвращает имя драйвера базы данных. Переводит имя для драйвера MySQL с поддержкой utf8 в стандартное имя.

Возвращает
имя драйвера.

Перекрестные ссылки db().

Используется в uid().

◆ getUniqueIndices()

QStringList aDatabase::getUniqueIndices ( const QString & flddefs)
static

getUniqueIndices procedure parses table definition and returns list of string in form 'U'<num>'%1('<field-list>')' Syntax of index field of table definition is extended to allow using of multicolumn indices. For each multicolumn index column 'U'<num> character sequence should be added to index field of column definition, where <num> is a number of multicolumn index. Example: Definition "a c 20 * pu1,b c 30 * iu1,c d * * u2,d n 10 3 u2" leads to creation of two multicolumn indices: (a,b) and (c,d).

Аргументы
flddefs(in) - database table definition
Возвращает
list of string in form 'U'<num>'%1('<field-list>')'

returned strings can be easily used to create SQL-query for index creation as follows: query="create unique index "+tablename+"_uniq_"+retval.arg(" on "+tablename)

◆ init() [1/2]

bool aDatabase::init ( aCfgRc * rc,
const QString & dbname = QString::null )

Открывает соединение с базой данных на SQL сервере или создает базу данных.

Если БД не удалось открыть, метод пытается создать базу данных на SQL сервере, используя переданные параметры соединения с SQL сервером. При этом создается пустая база данных без таблиц и других элементов.

Аргументы
rc(in) - ссылка на инициализированный объект, хранящий данные файла ресурсов, необходимые для установления соединения. Проще говоря, объект с параметрами соединения.
dbname(in) - не используется
Возвращает
frue, если не было ошибок
См. также
init( const QString &rcname, const QString &dbname )

Создает базу данных на SQL сервере. Читает переданный файл ресурса и создает соединение с сервером баз данных. После этого создает базу данных с параметрами, заданными в файле ресурса.

См. также
init( const QString &rcname, const QString &dbname )
Аргументы
rc(in) - ссылка на файл ресурса
dbname(in) - не используется
Возвращает

Перекрестные ссылки cfg, db(), prepareDatabaseConnect(), aLog::print() и aCfgRc::value().

Используется в init().

◆ init() [2/2]

bool aDatabase::init ( const QString & rcname,
const QString & dbname = QString::null )

Creates database on SQL server. This is overloaded method, provided for convenience.

/en

Аргументы
rcname(in) - rc file name
dbname(in) - not used
Возвращает
true, if no error /_en /ru

Вспомогательный метод для установления соединения с БД на SQL сервере или ее создания.

Перегружет метод init( aCfgRc *rc, const QString &dbname ) и использует его.

Аргументы
rcname(in) - имя файла ресурсов, содержащего параметры соединения с базой данных.
dbname(in) - имя базы данных. (не используется, берется из файла ресурсов)
Возвращает
true, если файл ресурсов успешно прочитан, false - в противном случае. /_ru

Перегружет метод init( aCfgRc *rc, const QString &dbname )

См. также
init( aCfgRc *rc, const QString &dbname )
Аргументы
rcname(in) - имя файла ресурса
dbname(in) - имя базы данных
Возвращает
true, если ошибок не было

Перекрестные ссылки cfg и init().

◆ markDeleted()

void aDatabase::markDeleted ( Q_ULLONG uid)

Устанавливает флаг удаления в true в системной таблице для заданного uid

См. также
deleteMarked()
Аргументы
uid- id для пометки на удаление

Перекрестные ссылки db() и uid().

◆ prepareDatabaseConnect()

bool aDatabase::prepareDatabaseConnect ( aCfgRc * dbParams)

Инициализирует драйвер sql соединения.

Для инициализации используются параметры из файла ресурсов бизнес схемы.

Аргументы
dbParams- объект хранящий данные файла ресурсов.
Возвращает
true, если драйвер успешно инициализирован. false, если возникла ошибка.

Перекрестные ссылки done() и aCfgRc::value().

Используется в init().

◆ table()

aDataTable * aDatabase::table ( const QString & name = QString::null)

Creates aDataTable object for browsing and editing sql table in current database.

Аргументы
name(in) - sql table name.
Возвращает
newly created object.

Перекрестные ссылки tableExists().

◆ tableDbName() [1/2]

QString aDatabase::tableDbName ( aCfg & md,
aCfgItem context )
static

Вспомогательный метод. Возвращает имя sql таблицы для объекта метаданных.

См. также
tableDbName( aCfg &md, aCfgItem context, long * tid )
Аргументы
md(in) - дерево метаданных.
context(in) - объект метаданных
Возвращает
имя таблицы в базе данных

Перекрестные ссылки tableDbName().

◆ tableDbName() [2/2]

QString aDatabase::tableDbName ( aCfg & md,
aCfgItem context,
long * tid )
static

Возвращает имя sql таблицы для объекта метаданных.

См. также
tableDbName( aCfg &md, aCfgItem context, long * tid )
Аргументы
md(in) - дерево метаданных.
context(in) - объект метаданных
tid(out) - идентификатор объекта метаданных, которому принадлежит таблица
Возвращает
имя таблицы в базе данных

Перекрестные ссылки aCfg::id(), aCfg::objClass() и aCfg::parent().

Используется в aCatalogue::initObject(), aCatGroup::initObject(), aDocJournal::initObject(), aDocument::initObject(), aExtSQL::SqlTableName() и tableDbName().

◆ tableExists()

bool aDatabase::tableExists ( const QString & name)

Проверяет, существует ли таблица в базе данных.

Аргументы
name(in) - имя проверяемой таблицы
Возвращает
true, если таблица существует

Используется в table().

◆ uid()

Q_ULLONG aDatabase::uid ( int otype)

Генерирует новый уникальный номер. Эти номера являются невосполнимым ресурсом системы.

Аргументы
otype(in) - тип объекта
Возвращает
новый сгенерированный номер

Перекрестные ссылки db(), driverName(), aLog::print() и uid().

Используется в markDeleted(), uid() и uidType().

◆ uidType()

int aDatabase::uidType ( Q_ULLONG uid)

Возвращает тип объекта по его идентификатору.

См. также
uid( int otype )
Аргументы
uid(in) - уникальный идентификатор объекта
Возвращает
тип объекта

Перекрестные ссылки db(), aLog::print() и uid().

◆ update()

bool aDatabase::update ( )

Вспомогательный метод. Обновляет структуру базы данных.

См. также
createdb()

Данные класса

◆ cfg

aCfg aDatabase::cfg

Объект для работы с метаданными бизнес схемы Ананаса. .

метаданные

Используется в aForm::aForm(), aForm::aForm(), aObject::aObject(), aObjectList::aObjectList(), aWidget::aWidget(), init(), init(), wDBTable::init(), wCatalogEditor::initCat() и wJournal::initObject().

◆ ddb

QSqlDatabase* aDatabase::ddb

ссылка на базу данных


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