Skip to content
This repository was archived by the owner on Sep 16, 2025. It is now read-only.

Commit 33716bf

Browse files
Propriedades como sufixos. | Properties as suffix.
Melhorias: - Agora o DBManager suporta queries onde o atributo desejado está contido após um ponto (a tabela consta como prefixo). EN Improved: - Now it supports queries with dots (where the property is a suffix).
1 parent d517d9e commit 33716bf

16 files changed

+823
-25
lines changed

DBManager.pro

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
# Developer: Mauro Mascarenhas de Araújo
55
# Contact: mauro.mascarenhas@nintersoft.com
66
# License: Nintersoft Open Source Code Licence
7-
# Date: 15 of November of 2018
8-
# Version: 2.0.4.1
7+
# Date: 23 of January of 2019
8+
# Version: 2.0.5.6
99
#
1010
#-------------------------------------------------
1111

@@ -15,17 +15,17 @@ TARGET = DBManager
1515
TEMPLATE = lib
1616

1717
win32 {
18-
VERSION = 2.0.4.1
18+
VERSION = 2.0.5.6
1919

2020
QMAKE_TARGET_COMPANY = Nintersoft
2121
QMAKE_TARGET_PRODUCT = DBManager
2222
QMAKE_TARGET_DESCRIPTION = DBManager
23-
QMAKE_TARGET_COPYRIGHT = Copyright (c) 2018 - Nintersoft
23+
QMAKE_TARGET_COPYRIGHT = Copyright (c) 2019 - Nintersoft
2424

2525
CONFIG += skip_target_version_ext
2626
}
2727
else {
28-
VERSION = 2.0.4
28+
VERSION = 2.0.5
2929
CONFIG += unversioned_libname
3030
}
3131

dbmanager.cpp

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# Developer: Mauro Mascarenhas de Araújo
55
# Contact: mauro.mascarenhas@nintersoft.com
66
# License: Nintersoft Open Source Code Licence
7-
# Date: 15 of November of 2018
7+
# Date: 23 of January of 2019
88
#
99
------------------------------------------------- */
1010

@@ -264,26 +264,26 @@ QVariantList DBManager::retrieveRow(const QString &tableName, const QStringList
264264
return retrievedData;
265265
}
266266

267-
QList<QVariantList> DBManager::retrieveAll(const QString &tableName, const QStringList &columns,
267+
QList< QVariantList > DBManager::retrieveAll(const QString &tableName, const QStringList &columns,
268268
const QStringList &groupby, const QStringList &orderby){
269269
QSqlQuery retrieveQuery = buildBindedQuery(tableName, columns,
270270
QStringList(), QVariantList(),
271271
"=", groupby, orderby);
272272
return executeSelectQuery(retrieveQuery);
273273
}
274274

275-
QList<QVariantList> DBManager::retrieveAllCond(const QString &tableName, const QString &columnCondition,
275+
QList< QVariantList > DBManager::retrieveAllCond(const QString &tableName, const QString &columnCondition,
276276
const QVariant &condition, const QString &operation,
277277
const QStringList &orderby){
278278
QSqlQuery retrieveQuery = buildBindedQuery(tableName, QStringList(),
279279
QStringList() << columnCondition,
280-
QList< QVariant >() << condition,
280+
QVariantList() << condition,
281281
operation, QStringList(),
282282
orderby);
283283
return executeSelectQuery(retrieveQuery);
284284
}
285285

286-
QList<QVariantList> DBManager::retrieveAllCond(const QString &tableName, const QStringList &columnCondition,
286+
QList< QVariantList > DBManager::retrieveAllCond(const QString &tableName, const QStringList &columnCondition,
287287
const QVariantList &condition, const QString &operation,
288288
const QStringList &orderby){
289289
QSqlQuery retrieveQuery = buildBindedQuery(tableName, QStringList(),
@@ -293,19 +293,19 @@ QList<QVariantList> DBManager::retrieveAllCond(const QString &tableName, const Q
293293
return executeSelectQuery(retrieveQuery);
294294
}
295295

296-
QList<QVariantList> DBManager::retrieveAllCond(const QString &tableName, const QStringList &columnName,
296+
QList< QVariantList > DBManager::retrieveAllCond(const QString &tableName, const QStringList &columnName,
297297
const QString &columnCondition, const QVariant &condition,
298298
const QString &operation, const QStringList &groupby,
299299
const QStringList &orderby){
300300
QSqlQuery retrieveQuery = buildBindedQuery(tableName, columnName,
301301
QStringList() << columnCondition,
302-
QList< QVariant >() << condition,
302+
QVariantList() << condition,
303303
operation, groupby,
304304
orderby);
305305
return executeSelectQuery(retrieveQuery);
306306
}
307307

308-
QList<QVariantList> DBManager::retrieveAllCond(const QString &tableName, const QStringList &columnName,
308+
QList< QVariantList > DBManager::retrieveAllCond(const QString &tableName, const QStringList &columnName,
309309
const QStringList &columnCondition, const QVariantList &condition,
310310
const QString &operation, const QStringList &groupby,
311311
const QStringList &orderby){
@@ -511,7 +511,7 @@ QString DBManager::getConnectionType(DBConnectionType cType){
511511
QString DBManager::buildQuery(const QString &tableName, const QStringList &columnName,
512512
const QStringList &columnCondition, const QVariantList &condition,
513513
const QString &operation, const QStringList &groupby,
514-
const QStringList &orderby){
514+
const QStringList &orderby, const QStringList &bindFields){
515515
if (tableName.isEmpty() || (columnCondition.size() != condition.size()))
516516
return QString();
517517

@@ -533,9 +533,17 @@ QString DBManager::buildQuery(const QString &tableName, const QStringList &colum
533533

534534
if (!columnCondition.isEmpty()){
535535
command += " WHERE ";
536-
for (int i = 0; i < columns; ++i)
537-
command += (columnCondition.at(i) + " " + operation + " :" + columnCondition.at(i) + " AND ");
538-
command += (columnCondition.at(columns) + " " + operation + " :" + columnCondition.at(columns));
536+
if (bindFields.size() == columnCondition.size())
537+
{
538+
for (int i = 0; i < columns; ++i)
539+
command += (columnCondition.at(i) + " " + operation + " :" + bindFields.at(i) + " AND ");
540+
command += (columnCondition.at(columns) + " " + operation + " :" + bindFields.at(columns));
541+
}
542+
else {
543+
for (int i = 0; i < columns; ++i)
544+
command += (columnCondition.at(i) + " " + operation + " :" + columnCondition.at(i) + " AND ");
545+
command += (columnCondition.at(columns) + " " + operation + " :" + columnCondition.at(columns));
546+
}
539547
}
540548

541549
if (!groupby.isEmpty()){
@@ -561,23 +569,27 @@ QSqlQuery DBManager::buildBindedQuery(const QString &tableName, const QStringLis
561569
const QStringList &columnCondition, const QVariantList &condition,
562570
const QString &operation, const QStringList &groupby,
563571
const QStringList &orderby){
572+
QStringList bindFields(columnCondition);
573+
for (int i = 0; i < bindFields.size(); ++i)
574+
bindFields[i].replace(".", "_");
575+
564576
QString command = buildQuery(tableName, columnName,
565577
columnCondition, condition,
566578
operation, groupby,
567-
orderby);
579+
orderby, bindFields);
568580

569581
if (command.isEmpty()) return QSqlQuery();
570582
int columns = columnCondition.length();
571583

572584
QSqlQuery retrieveQuery(QSqlDatabase::database(this->connectionName()));
573585
retrieveQuery.prepare(command);
574586
for (int i = 0; i < columns; ++i)
575-
retrieveQuery.bindValue(":" + columnCondition.at(i), condition.at(i));
587+
retrieveQuery.bindValue(":" + bindFields.at(i), condition.at(i));
576588

577589
return retrieveQuery;
578590
}
579591

580-
QList<QVariantList> DBManager::executeSelectQuery(QSqlQuery &query){
592+
QList< QVariantList > DBManager::executeSelectQuery(QSqlQuery &query){
581593
QList < QVariantList > results;
582594

583595
if (query.exec()){

dbmanager.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# Developer: Mauro Mascarenhas de Araújo
55
# Contact: mauro.mascarenhas@nintersoft.com
66
# License: Nintersoft Open Source Code Licence
7-
# Date: 15 of November of 2018
7+
# Date: 23 of January of 2019
88
#
99
------------------------------------------------- */
1010

@@ -142,11 +142,11 @@ class DBMANAGERSHARED_EXPORT DBManager : public QSqlDatabase
142142
const QString &columnCondition, const QVariant &condition,
143143
const QString &operation = "=",
144144
const QStringList &orderby = QStringList());
145-
QList<QVariantList> retrieveAllCond(const QString &tableName,
145+
QList< QVariantList > retrieveAllCond(const QString &tableName,
146146
const QStringList &columnCondition, const QVariantList &condition,
147147
const QString &operation = "=",
148148
const QStringList &orderby = QStringList());
149-
QList<QVariantList> retrieveAllCond(const QString &tableName, const QStringList &columnName,
149+
QList< QVariantList > retrieveAllCond(const QString &tableName, const QStringList &columnName,
150150
const QString &columnCondition, const QVariant &condition,
151151
const QString &operation = "=",
152152
const QStringList &groupby = QStringList(),
@@ -196,7 +196,8 @@ class DBMANAGERSHARED_EXPORT DBManager : public QSqlDatabase
196196
const QVariantList &condition = QVariantList(),
197197
const QString &operation = "=",
198198
const QStringList &groupby = QStringList(),
199-
const QStringList &orderby = QStringList());
199+
const QStringList &orderby = QStringList(),
200+
const QStringList &bindFields = QStringList());
200201

201202
QSqlQuery buildBindedQuery(const QString &tableName, const QStringList &columnName = QStringList(),
202203
const QStringList &columnCondition = QStringList(),
@@ -205,7 +206,7 @@ class DBMANAGERSHARED_EXPORT DBManager : public QSqlDatabase
205206
const QStringList &groupby = QStringList(),
206207
const QStringList &orderby = QStringList());
207208

208-
QList<QVariantList> executeSelectQuery(QSqlQuery &query);
209+
QList< QVariantList > executeSelectQuery(QSqlQuery &query);
209210

210211
static DBManager *currentInstance;
211212

36.8 KB
Binary file not shown.
Binary file not shown.
Binary file not shown.

sample program/v2.0.5.6/DBTest.zip

1.24 MB
Binary file not shown.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#-------------------------------------------------
2+
#
3+
# Project developed by Nintersoft team
4+
# Developer: Mauro Mascarenhas de Araújo
5+
# Contact: mauro.mascarenhas@nintersoft.com
6+
# License: Nintersoft Open Source Code Licence
7+
# Date: 15 of November of 2018
8+
# Version: 2.0.4.1
9+
#
10+
#-------------------------------------------------
11+
12+
QT += gui sql network
13+
14+
CONFIG += c++11 console
15+
CONFIG -= app_bundle
16+
17+
# The following define makes your compiler emit warnings if you use
18+
# any feature of Qt which as been marked deprecated (the exact warnings
19+
# depend on your compiler). Please consult the documentation of the
20+
# deprecated API in order to know how to port your code away from it.
21+
DEFINES += QT_DEPRECATED_WARNINGS
22+
23+
# You can also make your code fail to compile if you use deprecated APIs.
24+
# In order to do so, uncomment the following line.
25+
# You can also select to disable deprecated APIs only up to a certain version of Qt.
26+
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
27+
28+
SOURCES += \
29+
main.cpp
30+
31+
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/dbmanager/ -lDBManager
32+
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/dbmanager/ -lDBManager
33+
34+
INCLUDEPATH += $$PWD/dbmanager
35+
DEPENDPATH += $$PWD/dbmanager
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
Licen�a de c�digo aberto Nintersoft
2+
1. Licen�a de c�digo aberto.
3+
1.1. Esta licen�a tem por objetivo garantir a disponibilidade do c�digo do
4+
programa para qualquer desenvolvedor/usu�rio do programa.
5+
2. Uso Pessoal.
6+
2.1. Programas cobertos por esta licen�a s�o livres para uso pessoal.
7+
2.1.1. Os usu�rios do programa coberto por esta licen�a poder�o modific�-lo a
8+
fim de atender �s suas necessidades, devendo redistribu�-lo sob esta mesma
9+
licen�a de c�digo aberto.
10+
3. Distribui��o comercial.
11+
3.1. Distribui��es em corpora��es do programa coberto por esta licen�a s�o
12+
livres, por�m dever�o seguir algumas restri��es.
13+
3.1.1. � vetada qualquer tipo de venda da aplica��o sem autoriza��o dos
14+
desenvolvedores do projeto original, ou seja, esta autoriza��o n�o poder� ser
15+
cedida por desenvolvedores secund�rios e de �projetos filho� (ver artigo #17).
16+
3.1.2. � permitida a venda de complementos para a aplica��o caso ela
17+
disponibilize suporte para tal.
18+
3.1.2.1. Caso a aplica��o possua suporte � plug-ins, personaliza��es ou
19+
extens�es, recursos complementares desenvolvidos por terceiros n�o ter�o
20+
obriga��o de ser compartilhados, podendo inclusive ser comercializado.
21+
3.1.2.2. Desenvolvedores de extens�es, personaliza��es ou plug-ins poder�o
22+
cobrar o pre�o que julgarem justo.
23+
3.1.2.3. Desenvolvedores de extens�es, personaliza��es ou plug-ins poder�o
24+
adotar sua pr�pria licen�a de uso e de redistribui��o, desde que n�o conflite
25+
com qualquer item descrito nesta licen�a.
26+
3.2. Uso do c�digo ou licen�a em rede ser� considerada redistribui��o.
27+
3.3. A empresa ou contribuinte poder� adaptar o programa ou c�digo coberto
28+
por esta licen�a a fim de melhor satisfaz�-lo, desde que esteja de acordo com o
29+
item #3 e seus respectivos subitens.
30+
4. Uso de sublicen�as.
31+
4.1. � vetado o uso de quaisquer tipos de sublicen�as de terceiros, tanto no
32+
projeto do c�digo original quanto no compartilhamento do c�digo ou projeto
33+
compilado.
34+
4.1.2. Em caso de sub licenciamento o contribuinte/distribuidor do c�digo
35+
estar� disposto �s penalidades impostas pelo propriet�rio original do c�digo ou
36+
projeto.
37+
5. Direitos autorais e de c�pia.
38+
5.1. Os direitos autorais s�o reservados ao propriet�rio inicial do programa (ou
39+
corpora��o que possui os direitos legais).
40+
5.1.1. Qualquer c�pia comercializ�vel dever� ser notificada ao
41+
autor/respons�vel pelo programa original a fim de que as partes
42+
comercializ�veis do programa sejam verificadas a fim de evitar poss�veis
43+
abusos.
44+
5.2. Todos os c�digos revisados e distribu�dos dever�o conter refer�ncias ao
45+
autor do c�digo e ao projeto original, inclusive o cabe�alho do c�digo (caso
46+
haja).
47+
5.2.1. As refer�ncias ser�o estipuladas pelo autor do c�digo, sendo assim,
48+
quaisquer nomes em coment�rios ou marca��es dever�o ser mantidas a fim de
49+
preservar os direitos do autor.
50+
6. Mudan�as no c�digo fonte.
51+
6.1. Toda e qualquer mudan�a no c�digo dever� ser compartilhada, a fim de
52+
que toda a comunidade seja beneficiada.
53+
6.2. A disponibiliza��o de c�digo alterado e revisado n�o necessita da
54+
autoriza��o do autor original do c�digo, mas este deve ser notificado a respeito
55+
das modifica��es.
56+
6.2.1. Fica � merc� do autor original do programa incorporar o c�digo
57+
modificado ao seu programa ou n�o, dando os devidos cr�ditos ao contribuinte,
58+
caso opte por implantar a melhoria.
59+
7. Distribui��o do c�digo e programa.
60+
7.1. A redistribui��o tanto do c�digo quanto do programa � permitida, desde
61+
que esteja em acordo com os demais itens contidos nesta licen�a.
62+
8. Aviso de licen�a e direitos de c�pia.
63+
8.1. Todo e qualquer software baseado no programa coberto por esta licen�a
64+
deve conter os direitos autorais voltados ao autor original do c�digo fonte.
65+
8.1.1. As licen�as e refer�ncias do autor originais dever�o ser mantidas a fim
66+
de garantir os direitos de c�pia e autorais ao autor original.
67+
9. Uso de nomes, slogans e logotipos de contribuintes.
68+
9.1. O uso de nomes de contribuintes � permitido, desde que sejam mantidos e
69+
tamb�m os dados do autor original do conte�do disponibilizado.
70+
9.2. Uso de logotipos � proibido e deve ser mantido o original do autor, com
71+
todas as refer�ncias devidas.
72+
9.3. O uso de slogans � proibido, j� que mesmo deixando refer�ncias ao autor
73+
original, ele distorcer� o sentido do c�digo aberto compartilhado pelo autor do
74+
c�digo.
75+
10. Avisos de mudan�as no c�digo fonte.
76+
10.1. Qualquer altera��o realizada no c�digo fonte dever� vir com uma
77+
descri��o do que as altera��es podem acarretar (consequ�ncias da �ltima
78+
altera��o realizada no c�digo fonte).
79+
11. Tradu��es.
80+
11.1. Tradu��es para esta licen�a poder�o ser feitas apenas pela equipe oficial
81+
Nintersoft, caso contr�rio, a tradu��o ser� invalidada e servir� apenas para
82+
uma no��o de como a licen�a funciona, (item #11.2) a fim de que n�o haja
83+
distor��es na compreens�o desta licen�a.
84+
11.2. Tradu��es n�o oficiais desta licen�a poder�o ser utilizadas, desde que
85+
acompanhadas pela licen�a original em Portugu�s.
86+
12. Bibliotecas.
87+
12.1. A disponibiliza��o do c�digo das bibliotecas utilizadas no programa fica �
88+
merc� do propriet�rio do c�digo fonte.
89+
13. Recursos f�sicos.
90+
13.1. Recursos f�sicos (ou em ingl�s, hardware) presentes na programa��o
91+
coberta por esta licen�a, n�o s�o cobertos.
92+
13.1.1. Para qualquer recurso de projeto que n�o seja referente apenas a
93+
c�digos, devem incluir tamb�m a licen�a CC (Creative Commons).
94+
14. Garantia.
95+
14.1. Caso os termos de garantia n�o sejam citados pela corpora��o/autor do
96+
c�digo do projeto ele(a) n�o poder� ser responsabilizado(a) por quaisquer
97+
danos que o programa ou c�digo em si possam trazer para o usu�rio que
98+
estiver utilizando softwares sob esta licen�a.
99+
14.1.1. Caso haja acordo ou licen�a de garantia entre o desenvolvedor e o
100+
usu�rio, o item 14.1.2 n�o ser� aplic�vel.
101+
14.1.2. Tanto danos no hardware do usu�rio quanto incompatibilidade de
102+
softwares n�o s�o responsabilidade do desenvolvedor do programa, mas do
103+
usu�rio, a partir do momento em que passa a usar o programa/c�digo deste
104+
projeto.
105+
15. Per�odo de licen�a.
106+
15.1. O software que portar esta licen�a estar� por ela coberta durante tempo
107+
indeterminado.
108+
16. Perda da licen�a.
109+
16.1. O software poder� perder a cobertura da licen�a caso haja alguma
110+
diverg�ncia como descrito nos itens abaixo:
111+
#1 - O autor/corpora��o propriet�ria do projeto abdicar desta licen�a de
112+
c�digo aberto.
113+
#2 - Caso o projeto possua mais de uma Licen�a de C�digo Aberto, esta
114+
licen�a dever� ser invalidada (Referindo-se a Licen�a de C�digo Aberto
115+
Nintersoft).
116+
#3 � Caso haja qualquer modifica��o nesta licen�a, o c�digo deixar� de
117+
ser coberto por esta.
118+
17. Penalidade por descumprimento de itens desta licen�a.
119+
17.1. O desenvolvedor do programa tem o direito de aplicar as medidas que
120+
achar necess�rio, mas caso estas medidas n�o sejam previamente
121+
estabelecidas o infrator estar� sujeito �s penalidades descritas no item (e seus
122+
respectivos subitens) 17.2.
123+
17.2.1. O usu�rio que comercializar partes indevidas do projeto dever�
124+
ressarcir todo o seu lucro ao dono do projeto (ou caso haja acordo parte dele).
125+
17.2.2. Qualquer terceiro n�o indicar os direitos autorais contidos no item 5
126+
poder�o responder judicialmente ao dono do projeto original.
127+
19. Acompanhamento de licen�a
128+
19.1. Todo subprojeto ou altera��es realizadas por terceiros dever�o incluir a
129+
c�pia desta licen�a como arquivo no formato �.pdf�, �.rtf� ou �.txt�, ambos
130+
inalterados.
131+
18. Dados da licen�a.
132+
18.1. Vers�o da licen�a (vers�o principal e revis�o): 1.1
133+
18.2. Data de revis�o: 31/01/2016.
134+
18.3. Disponibilidade da licen�a: http://www.nintersoft.com/sobre/licenca-de-
135+
codigo-aberto/.
136+
19. Direitos Nintersoft.
137+
19.1. A Nintersoft reserva-se o direito de poder fazer quaisquer altera��es
138+
nesta licen�a a fim de melhor adequ�-la aos programas por ela desenvolvidos.
144 KB
Binary file not shown.

0 commit comments

Comments
 (0)