Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 9cf4747e

Von Christian Ehringfeld vor etwa 9 Jahren hinzugefügt

  • ID 9cf4747e45c35e2c641172018799bed127159c89
  • Vorgänger caea9141
  • Nachfolger 14f9beed

wip

Unterschiede anzeigen:

src/database.cpp
*/
#include "database.h"
namespace CuteEntityManager {
using namespace CuteEntityManager;
Database::Database(QSqlDatabase database) {
this->database = database;
......
this->database.open();
this->databasetype = this->getDatabaseType();
this->supportTransactions = this->database.driver()->hasFeature(QSqlDriver::Transactions);
this->tableList = new QStringList();
this->tableList = QStringList();
this->getTableListFromDatabase();
this->createSequenceTable();
}
......
void Database::getTableListFromDatabase() {
if (this->database.open()) {
QString q = "";
if (this->databasetype == CuteEntityManager::SQLITE) {
q = this->sqliteTableList();
} else if (this->databasetype == CuteEntityManager::MYSQL) {
q = this->mysqlTableList();
} else if (this->databasetype == CuteEntityManager::PGSQL) {
q = this->pgsqlSeqTable();
}
QSqlQuery query = QSqlQuery(this->database);
query.prepare(q);
this->select(query);
......
}
}
void Database::setTableList(QSqlQuery &q) {
while (q.next()) {
this->tableList->append(q.value(0).toString());
}
}
//QString Database::mysqlTableList() {
// return "SHOW TABLES;";
//}
......
return this->connectionName;
}
void Database::setSeqTable(bool seqTable) {
this->seqTable = seqTable;
}
bool Database::isSeqTable() {
return this->seqTable;
}
//QString Database::pgsqlSeqTable() {
// return "CREATE TABLE IF NOT EXISTS sequence (SEQ_NAME varchar(255) NOT NULL UNIQUE , SEQ_COUNT bigint NOT NULL);";
//}
......
return this->tableList->contains(tblname);
}
void Database::createSequenceTable() {
if (this->database.open() && this->getLastId() == -1) {
QString query = "";
QStringList l = QStringList();
if (this->databasetype == CuteEntityManager::MYSQL) {
query = this->mysqlSeqTable();
} else if (this->databasetype == CuteEntityManager::SQLITE) {
query = this->sqliteSeqTable();
} else if (this->databasetype == CuteEntityManager::PGSQL) {
query = this->pgsqlSeqTable();
}
l.append(query);
l.append(this->querySequenceCounter());
if (this->transaction(l)) {
this->setSeqTable(true);
} else {
this->setSeqTable(false);
}
} else {
this->setSeqTable(true);
}
}
bool Database::updateSequenceCounter(QSqlQuery &q) {
QList<QSqlQuery> l = QList<QSqlQuery>();
l.append(QSqlQuery("UPDATE sequence SET SEQ_COUNT=(SEQ_COUNT+1);", this->database));
......
QSqlDatabase Database::getDatabase() {
return this->database;
}
}

Auch abrufbar als: Unified diff