Библиотека QT для работы со схемой базы данных.  1.0.1
qdataschema.h
1 /****************************************************************************
2 ** $Id: qdataschema.h,v 1.30 2008/10/16 19:17:50 leader Exp $
3 **
4 ** Header file of the ananas database of Ananas
5 ** Designer and Engine applications
6 **
7 ** Created : 20031201
8 **
9 ** Copyright (C) 2003-2004 Leader InfoTech. All rights reserved.
10 **
11 ** This file is part of the Library of the Ananas
12 ** automation accounting system.
13 **
14 ** This file may be distributed and/or modified under the terms of the
15 ** GNU General Public License version 2 as published by the Free Software
16 ** Foundation and appearing in the file LICENSE.GPL included in the
17 ** packaging of this file.
18 **
19 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
20 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
21 **
22 ** See http://www.leaderit.ru/page=ananas or email sales@leaderit.ru
23 ** See http://www.leaderit.ru/gpl/ for GPL licensing information.
24 **
25 ** Contact org@leaderit.ru if any conditions of this licensing are
26 ** not clear to you.
27 **
28 **********************************************************************/
29 
30 #ifndef QDATASCHEMA_H
31 #define QDATASCHEMA_H
32 #include "qdataschemaglobal.h"
33 
34 #if defined(Q_OS_WIN32) && !defined(LIB_NO_DLL)
35 # define DB_IMPORT __declspec(dllimport)
36 #else
37 # define DB_IMPORT
38 #endif
39 
40 class QSqlCursor;
41 class QDataSchemaDriver;
42 
43 class QDataSchema: public QObject
44 {
45 Q_OBJECT
46 public:
47  QDataSchema( const QString ctype, const char *objname = 0, QObject *owner = 0 );
48  ~QDataSchema();
49 #if QT_VERSION<0x040000
50  QString objectName() const { return name();};
51  void setObjectName( const QString &newname ) { setName( newname );};
52 #endif
53 
54  bool open( const QString &dbname,
55  const QString &dbuser = "", const QString &dbpass = "",
56  const QString &dbhost = "localhost", int dbport = 0 );
57 
58  bool open();
59  void close();
60 
61  QSqlDatabase* db();
62 
63  bool databaseCreate( const QString &dbadmuser, const QString &dbadmpass );
64  bool databaseDrop( const QString &dbadmuser, const QString &dbadmpass );
65 
66  int execList( const QStringList &query, bool inTransaction = false );
67 
68  QDS_SQLTable *table( const QString &name = QString::null );
69  QString tableName( const QString &name );
70  QString tableNameStripPrefix( const QString &name );
71 
72  QString nameSpace() const;
73  void setNameSpace( const QString &namesp );
74 
75  bool tableExists( const QString & name );
76 
77  static QStringList drivers();
78  static bool isDriverAvailable ( const QString & name );
79  static QDataSchemaDriver *createDriver(const QString ctype);
81  void setDataDictionary( const QStringList &dd_new );
82  QStringList dataDictionary();
83  QStringList updateStructureQuery();
84  QStringList verifyLog();
85  int verifyStructure();
86  int updateStructure();
87 
88  virtual int databaseExport( const QString &filename );
89  virtual int databaseImport( const QString &filename, bool updateStruct = false );
90 
91 public slots:
92 
93 signals:
94  void verifyMessage( QString op, QString value, QString oldvalue );
95 
96 protected:
97  void verifyLogRecord(QString op, QString value, QString oldvalue = "" );
98 
99  QString ddRecord( int idx, bool d_sql = false );
100  int ddCount( const QString &etype, bool d_sql = false );
101  int ddIndex( const QString &etype, int num, bool d_sql = false );
102  int ddIndex( const QString &etype, const QString &name, bool d_sql = false );
103  int ddCountSub( int idx, const QString &etype, bool d_sql = false );
104  int ddIndexSub( int idx, const QString &etype, int num, bool d_sql = false );
105  int ddIndexSub( int idx, const QString &etype, const QString &name, bool d_sql = false );
106  QString ddRecSection( const QString &rec, int secnum );
107  QString ddRecType( const QString &rec );
108  QString ddRecName( const QString &rec );
109  void joinLists( QStringList &list, const QStringList &add );
110  QStringList splitQString(const QString &div, const QString &str );
111  QString lowerQString(const QString &str );
112  QString trimmedQString(const QString &str);
113  int checkSqlError( QSqlQuery &query );
114  QString fieldTypeSql( const QString &tdef );
115  virtual int createSystables();
116 
117 private:
118  QStringList dd, dd_sql, dd_update, ql_update;
119  QString dd_name, tablename_prefix;
120  bool fVerified;
121 
122  QDataSchemaDriver *p_drv;
123 
124 #if QT_VERSION<0x040000
125  QSqlDatabase *p_db;
126 #else
127  QSqlDatabase p_db;
128 #endif
129  QString v_dbname, v_dbuser, v_dbpass, v_dbtype, v_dbhost;
130  int v_dbport;
131 
132  int readSqlDictionary();
133  int writeSqlDictionary();
134 };
135 
136 #endif
QStringList verifyLog()
Возвращает список изменений в БД.
Definition: qdataschema.cpp:1668
int ddIndexSub(int idx, const QString &etype, int num, bool d_sql=false)
Возвращает индекс подчиненного элемента словаря.
Definition: qdataschema.cpp:1485
~QDataSchema()
Закрывает соединение и освобождает ресурсы объекта.
Definition: qdataschema.cpp:223
QString ddRecName(const QString &rec)
Возвращает имя записи элемента словаря.
Definition: qdataschema.cpp:1601
QDataSchema(const QString ctype, const char *objname=0, QObject *owner=0)
Создает и инициализирует новый объект.
Definition: qdataschema.cpp:196
bool databaseCreate(const QString &dbadmuser, const QString &dbadmpass)
Создает новую базу данных.
Definition: qdataschema.cpp:1100
QString fieldTypeSql(const QString &tdef)
Возвращает описание записи поля словаря для активного сервера БД.
Definition: qdataschema.cpp:526
void close()
Закрывает соединение с сервером базоы данных.
Definition: qdataschema.cpp:314
int ddCountSub(int idx, const QString &etype, bool d_sql=false)
Количество подчиненных записей выбранного вида в словаре.
Definition: qdataschema.cpp:1449
static QDataSchemaDriver * createDriver(const QString ctype)
Возвращает список доступных драйверов.
Definition: qdataschema.cpp:1025
Класс для работы с сервером БД.
Definition: qdataschemadriver.h:33
void joinLists(QStringList &list, const QStringList &add)
Добавляет один список строк к другому.
Definition: qdataschema.cpp:1622
bool databaseDrop(const QString &dbadmuser, const QString &dbadmpass)
Удаляет базу данных с сервера.
Definition: qdataschema.cpp:1150
virtual int createSystables()
Создание системных таблиц.
Definition: qdataschema.cpp:568
QStringList updateStructureQuery()
Возвращает список запросов для обновления БД.
Definition: qdataschema.cpp:1645
int execList(const QStringList &query, bool inTransaction=false)
Выполняет список последовательных запросов.
Definition: qdataschema.cpp:1225
QString ddRecord(int idx, bool d_sql=false)
Возвращает запись словаря по индексу.
Definition: qdataschema.cpp:1326
int checkSqlError(QSqlQuery &query)
Проверяет результат выполнения запроса.
Definition: qdataschema.cpp:1190
QString nameSpace() const
Возвращает пространство имен таблиц базы данных.
Definition: qdataschema.cpp:632
QString ddRecType(const QString &rec)
Возвращает тип записи элемента словаря.
Definition: qdataschema.cpp:1575
static bool isDriverAvailable(const QString &name)
Проверка доступности драйвера по имени.
Definition: qdataschema.cpp:1052
int verifyStructure()
Проверяет структуру текущей БД на соответствие описанной в метаданных.
Definition: qdataschema.cpp:706
int updateStructure()
Обновляет структуру таблиц на сервере.
Definition: qdataschema.cpp:957
void setNameSpace(const QString &namesp)
Устанавливает пространство имен таблиц базы данных.
Definition: qdataschema.cpp:651
Класс для работы со схемой базы данных.
Definition: qdataschema.h:43
QDataSchemaDriver * driver()
Возвращает текущий драйвер базы данных.
Definition: qdataschema.cpp:1069
QSqlDatabase * db()
Definition: qdataschema.cpp:336
int ddIndex(const QString &etype, int num, bool d_sql=false)
Возвращает индекс элемента словаря.
Definition: qdataschema.cpp:1384
static QStringList drivers()
Возвращает список доступных драйверов.
Definition: qdataschema.cpp:993
QStringList dataDictionary()
Возвращает словарь описания данных.
Definition: qdataschema.cpp:506
int ddCount(const QString &etype, bool d_sql=false)
Количество записей выбранного вида в словаре.
Definition: qdataschema.cpp:1352
QString ddRecSection(const QString &rec, int secnum)
Возвращает секцию записи элемента словаря.
Definition: qdataschema.cpp:1554
virtual int databaseExport(const QString &filename)
Выгружает информацию из базы данных.
Definition: qdataschema.cpp:1729
bool tableExists(const QString &name)
Проверка существования таблицы на сервере БД.
Definition: qdataschema.cpp:459
QDS_SQLTable * table(const QString &name=QString::null)
Создает объект QSqlCursor для таблицы базы данных.
Definition: qdataschema.cpp:367
virtual int databaseImport(const QString &filename, bool updateStruct=false)
Загружает информацию в базу данных.
Definition: qdataschema.cpp:1820
void setDataDictionary(const QStringList &dd_new)
Устанавливает словарь описания данных.
Definition: qdataschema.cpp:486
void verifyLogRecord(QString op, QString value, QString oldvalue="")
Регистрирует запись изменений в БД.
Definition: qdataschema.cpp:1708
bool open()
Открывает и инициализирует соединение с сервером базы данных.
Definition: qdataschema.cpp:287