Timesheets-Server
Timesheets server
Načítám...
Vyhledávám...
Nebylo nic nalezeno
Dokumentace třídy Db::MSqlQuery

Vlastní rozšíření QSqlQuery o primitivní transakce a logování ...

#include <msqlquery.h>

Diagram dědičnosti pro třídu Db::MSqlQuery:

Veřejné metody

 MSqlQuery (QSqlDatabase)
 
bool exec (const QString &query)
 
bool exec ()
 
void begin ()
 
void rollback ()
 
bool commit ()
 
QString lastBoundQuery () const
 

Privátní metody

void jeChyba ()
 

Privátní atributy

bool m_inTransaction
 
bool m_rollback
 
bool m_success
 
bool m_commit
 

Detailní popis

Vlastní rozšíření QSqlQuery o primitivní transakce a logování

Definice je uvedena na řádku 18 v souboru msqlquery.h.

Dokumentace konstruktoru a destruktoru

◆ ~MSqlQuery()

MSqlQuery::~MSqlQuery ( )

Definice je uvedena na řádku 9 v souboru msqlquery.cpp.

9 {
10 if (!m_inTransaction) {
11 return;
12 }
13 Q_ASSERT(m_commit == true || m_rollback == true);
14}

◆ MSqlQuery() [1/2]

MSqlQuery::MSqlQuery ( )

Definice je uvedena na řádku 17 v souboru msqlquery.cpp.

17 : QSqlQuery() {
18 m_inTransaction = false;
19 m_rollback = false;
20 m_success = true;
21 m_commit = false;
22 setForwardOnly(true);
23}

◆ MSqlQuery() [2/2]

MSqlQuery::MSqlQuery ( QSqlDatabase db)

Definice je uvedena na řádku 26 v souboru msqlquery.cpp.

26 : QSqlQuery(db) {
27 m_inTransaction = false;
28 m_rollback = false;
29 m_success = true;
30 m_commit = false;
31 setForwardOnly(true);
32}

Dokumentace členských funkcí

◆ begin()

void MSqlQuery::begin ( )

Definice je uvedena na řádku 104 v souboru msqlquery.cpp.

104 {
105 QSqlQuery::exec("begin;");
106 m_commit = false;
107 m_rollback = false;
108 m_inTransaction = true;
109}

◆ commit()

bool MSqlQuery::commit ( )

Definice je uvedena na řádku 124 v souboru msqlquery.cpp.

124 {
125 // Q_ASSERT(m_rollback == false);
126 Q_ASSERT(m_inTransaction == true);
127 if (m_rollback) { return m_success; }
128 if (m_success) {
129 m_commit = true;
130 QSqlQuery::exec("commit;");
131 return m_success;
132 }
133 if (!m_success) {
134 m_rollback = true;
135 QSqlQuery::exec("rollback;");
136 return m_success;
137 }
138 return m_success;
139}

◆ exec() [1/2]

bool MSqlQuery::exec ( )

Definice je uvedena na řádku 93 v souboru msqlquery.cpp.

93 {
94 // Q_ASSERT(m_commit == false);
95 // Q_ASSERT(m_rollback == false);
96 if (m_inTransaction && !m_success) { return false; }
97 if (!QSqlQuery::exec()) {
98 jeChyba();
99 return false;
100 }
101 return true;
102}

◆ exec() [2/2]

bool MSqlQuery::exec ( const QString & query)

Definice je uvedena na řádku 81 v souboru msqlquery.cpp.

81 {
82 Q_ASSERT(m_commit == false);
83 Q_ASSERT(m_rollback == false);
84 if (m_inTransaction && !m_success) { return false; }
85 if (!QSqlQuery::exec(q)) {
86 jeChyba();
87 return false;
88 }
89 return true;
90}

◆ jeChyba()

void MSqlQuery::jeChyba ( )
private

Definice je uvedena na řádku 35 v souboru msqlquery.cpp.

35 {
36 m_success = false;
37 QSqlError e = QSqlQuery::lastError();
38 if (e.type() == QSqlError::NoError) {
39 return;
40 }
41 QString text = lastBoundQuery();
42 QString a = QString("%1\n%2\n%3\n")
43 .arg(e.databaseText())
44 .arg(e.driverText())
45 .arg(text)
46 ;
47 // PDEBUG << a << "\n" << stacktrace(16);
48 PDEBUG << a;
49 if (m_inTransaction) { rollback(); }
50}

◆ lastBoundQuery()

QString MSqlQuery::lastBoundQuery ( ) const

Definice je uvedena na řádku 53 v souboru msqlquery.cpp.

53 {
54 QString text = lastQuery();
55 QMap<QString, QVariant> bvals = boundValues();
56 QMapIterator<QString, QVariant> iterator(bvals);
57 while (iterator.hasNext()) {
58 iterator.next();
59 QString key = iterator.key();
60 QVariant val = bvals[key];
61 switch ((QMetaType::Type)(val.type())) {
62 case QMetaType::Int:
63 case QMetaType::UInt:
64 case QMetaType::Double:
65 case QMetaType::Float:
66 case QMetaType::Long:
67 case QMetaType::LongLong:
68 case QMetaType::Short:
69 case QMetaType::UShort:
70 text.replace(key, QString("%1").arg(val.toString()));
71 break;
72 default:
73 text.replace(key, QString("'%1'").arg(val.toString()));
74 break;
75 };
76 }
77 return text;
78}

◆ rollback()

void MSqlQuery::rollback ( )

Definice je uvedena na řádku 112 v souboru msqlquery.cpp.

112 {
113 Q_ASSERT(m_commit == false);
114 Q_ASSERT(m_inTransaction == true);
115 if (m_rollback) {
116 return;
117 }
118 m_success = false;
119 m_rollback = true;
120 QSqlQuery::exec("rollback;");
121}

Dokumentace datových členů

◆ m_commit

bool Db::MSqlQuery::m_commit
private

Definice je uvedena na řádku 38 v souboru msqlquery.h.

◆ m_inTransaction

bool Db::MSqlQuery::m_inTransaction
private

Definice je uvedena na řádku 35 v souboru msqlquery.h.

◆ m_rollback

bool Db::MSqlQuery::m_rollback
private

Definice je uvedena na řádku 36 v souboru msqlquery.h.

◆ m_success

bool Db::MSqlQuery::m_success
private

Definice je uvedena na řádku 37 v souboru msqlquery.h.


Dokumentace pro tuto třídu byla vygenerována z následujících souborů: