#include <sqldumpthread.h>
Public Slots | |
void | setDb (QSqlDatabase db, QString dbName, QStringList tableList, QStringList viewList, QStringList procedureList, bool drop, bool data, bool structure, bool createDb, bool useDb) |
Signals | |
void | currentObjectType (QString) |
void | currentObjectName (QString) |
void | currentPosition (int) |
void | objectValueCount (int) |
void | generatedQuery (QString) |
void | scriptingComplete () |
void | totalProgress (int) |
Public Member Functions | |
SqlDumpThread (QObject *parent=0) | |
Public Attributes | |
QSqlDatabase | db |
QString | dbName |
QStringList | tableList |
QStringList | viewList |
QStringList | procedureList |
bool | drop |
bool | data |
bool | structure |
bool | createDb |
bool | useDb |
Protected Member Functions | |
void | run () |
Definition at line 6 of file sqldumpthread.h.
SqlDumpThread::SqlDumpThread | ( | QObject * | parent = 0 ) |
[explicit] |
Definition at line 3 of file sqldumpthread.cpp.
: QThread(parent) { }
void SqlDumpThread::currentObjectName | ( | QString | ) | [signal] |
Referenced by setDb().
void SqlDumpThread::currentObjectType | ( | QString | ) | [signal] |
Referenced by setDb().
void SqlDumpThread::currentPosition | ( | int | ) | [signal] |
Referenced by setDb().
void SqlDumpThread::generatedQuery | ( | QString | ) | [signal] |
Referenced by setDb().
void SqlDumpThread::objectValueCount | ( | int | ) | [signal] |
Referenced by setDb().
void SqlDumpThread::run | ( | ) | [protected] |
void SqlDumpThread::scriptingComplete | ( | ) | [signal] |
Referenced by setDb().
void SqlDumpThread::setDb | ( | QSqlDatabase | db, |
QString | dbName, | ||
QStringList | tableList, | ||
QStringList | viewList, | ||
QStringList | procedureList, | ||
bool | drop, | ||
bool | data, | ||
bool | structure, | ||
bool | createDb, | ||
bool | useDb | ||
) | [slot] |
Definition at line 12 of file sqldumpthread.cpp.
References currentObjectName(), currentObjectType(), currentPosition(), generatedQuery(), objectValueCount(), scriptingComplete(), and totalProgress().
Referenced by run().
{ if (db.isOpen()) { //SQL Database Backup Script Generator emit totalProgress(0); int m_tableCount = tableList.count(); int m_viewCount = viewList.count(); int m_procCount = procedureList.count(); int m_totalCout = m_tableCount + m_viewCount + m_procCount; if (m_totalCout < 1) m_totalCout = 1; int m_pos = 0; QString finalSqlScript = ""; finalSqlScript.append(tr("" "/*" "\nSmart MySQL Tool Backup Script Generator 1.2" "\nMySQL Backup" "\n********************************************" "\n*/" "\n\n" "/*!40101 SET NAMES utf8 */;" "\n\n" "/*!40101 SET SQL_MODE=''*/;" "\n\n" "/*!40101 SET @OLD_FOREIGN_KEY CHECKS=!FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0*/;" "\n/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;")); if (createDb) { emit currentObjectName(dbName); emit currentObjectType("Database"); emit currentPosition(1); emit objectValueCount(1); finalSqlScript.append(tr("" "\n\nCREATE DATABASE /*!32312 IF NOT EXISTS*/`%1`/*!40100 DEFAULT CHARACTER SET latin1 */;" "").arg(dbName)); } if (useDb) { emit currentObjectName(dbName); emit currentObjectType("Database"); emit currentPosition(1); emit objectValueCount(1); finalSqlScript.append(tr("" "\n\nUSE `%1`;").arg(dbName)); } //TABLES if (tableList.length() > 0) { finalSqlScript.append("\n\n"); emit currentObjectType("Table"); emit objectValueCount(tableList.count()); for (int tables = 0; tables < tableList.count(); tables++) { m_pos = m_pos + 1; emit totalProgress((m_pos/m_totalCout)* 100); QString tableName = tableList.at(tables); emit currentObjectName(tableName); emit currentPosition(tables); QString tableString = ""; if (structure) { tableString.append(tr("" "\n/*Table Structure for table `%1` */").arg(tableName)); if (drop) { tableString.append(tr("" "\nDROP TABLE IF EXISTS `%1`;" "").arg(tableName)); } tableString.append("\n"); } //table structure if (structure) { QSqlQuery tableCreateQuery = QSqlQuery(db); if (tableCreateQuery.exec(tr("SHOW CREATE TABLE `%2`.`%1`").arg(tableName, dbName))) { tableCreateQuery.first(); tableString.append("\n"); tableString.append(tableCreateQuery.value(1).toString()); tableCreateQuery.clear(); tableString.append(";\n\n"); } } //table structure //table data if (data) { QString dataString = ""; QString queryHeader = ""; QSqlQuery tableDataQuery = QSqlQuery(db); if (tableDataQuery.exec(tr("describe `%1`.`%2`").arg(dbName, tableName))) { queryHeader.append(tr("" "INSERT INTO `%1`(" "").arg(tableName)); while (tableDataQuery.next()) { queryHeader.append(tr("" "`%1`, " "").arg(tableDataQuery.value(0).toString())); } queryHeader = queryHeader.left(queryHeader.length() - 2); queryHeader.append(") VALUES ("); //load all data tableString.append(tr("" "/*Data for the table `%1`*/\n" "").arg(tableName)); QString insertStatement = ""; QSqlQuery selectQuery = QSqlQuery(db); int pos = 0; if (selectQuery.exec(tr("SELECT * FROM `%1`.`%2`").arg(dbName, tableName))) { int cnt = selectQuery.size(); emit objectValueCount(cnt); emit currentObjectType(tr("Data for table %1").arg(tableName)); while (selectQuery.next()) { pos = pos + 1; QSqlRecord rec = selectQuery.record(); emit currentPosition(pos); insertStatement = queryHeader; //insert into `x`.`y` (`a`, `b`) values ( for (int i = 0; i < rec.count(); i++) { insertStatement.append(tr("'%1',").arg(rec.value(i).toString())); } insertStatement = insertStatement.left(insertStatement.length() - 1); insertStatement.append(");\n"); dataString.append(insertStatement); } } tableString.append(dataString); } } //table data finalSqlScript.append(tableString); } } //TABLES //VIEWS if (viewList.count() > 0) { finalSqlScript.append("\n\n"); QString viewString = ""; viewString.append("\n"); for (int view = 0; view < viewList.count(); view++) { m_pos = m_pos + 1; emit totalProgress((m_pos/m_totalCout)* 100); QString viewName = viewList.at(view); emit currentObjectName(viewName); emit currentObjectType("View"); emit currentPosition(view); emit objectValueCount(viewList.count()); QString viewDefinition = ""; if (drop) { viewDefinition.append(tr("\nDROP VIEW IF EXISTS `%1`;").arg(viewName)); } QSqlQuery viewDef = QSqlQuery(db); if (viewDef.exec(tr("SHOW CREATE VIEW `%1`").arg(viewName))) { while (viewDef.next()) { viewDefinition.append("\n"); viewDefinition.append(viewDef.value(1).toString()); viewDefinition.append(";\n"); } } viewString.append(viewDefinition); } finalSqlScript.append(viewString); } //END OF VIEWS //STORED PROCEDURES if (procedureList.count() > 0) { finalSqlScript.append("\n\n"); QString procString = ""; procString.append("\n"); for (int procedure = 0; procedure < procedureList.count(); procedure++) { m_pos = m_pos + 1; emit totalProgress((m_pos/m_totalCout)* 100); QString procedureName = procedureList.at(procedure); emit currentObjectName(procedureName); emit currentObjectType("Stored Procedure"); emit currentPosition(procedure); emit objectValueCount(procedureList.count()); QString procedureDefinition = ""; if (drop) { procedureDefinition.append(tr("\n/*!50003 DROP PROCEDURE IF EXISTS `%1`*/;\nDELIMITER $$").arg(procedureName)); } QSqlQuery procedureDef = QSqlQuery(db); if (procedureDef.exec(tr("SHOW CREATE PROCEDURE `%1`").arg(procedureName))) { while (procedureDef.next()) { procedureDefinition.append("\n/*"); procedureDefinition.append(procedureDef.value(2).toString()); procedureDefinition.append("*/ $$\nDELIMITER ;\n"); } } procString.append(procedureDefinition); } finalSqlScript.append(procString); } //END OF STORED PROCEDURES emit generatedQuery(finalSqlScript); emit scriptingComplete(); } }
void SqlDumpThread::totalProgress | ( | int | ) | [signal] |
Referenced by setDb().
Definition at line 19 of file sqldumpthread.h.
Referenced by run().
bool SqlDumpThread::data |
Definition at line 17 of file sqldumpthread.h.
Referenced by run().
QSqlDatabase SqlDumpThread::db |
Definition at line 11 of file sqldumpthread.h.
Referenced by run().
QString SqlDumpThread::dbName |
Definition at line 12 of file sqldumpthread.h.
Referenced by run().
bool SqlDumpThread::drop |
Definition at line 16 of file sqldumpthread.h.
Referenced by run().
QStringList SqlDumpThread::procedureList |
Definition at line 15 of file sqldumpthread.h.
Referenced by run().
Definition at line 18 of file sqldumpthread.h.
Referenced by run().
QStringList SqlDumpThread::tableList |
Definition at line 13 of file sqldumpthread.h.
Referenced by run().
bool SqlDumpThread::useDb |
Definition at line 20 of file sqldumpthread.h.
Referenced by run().
QStringList SqlDumpThread::viewList |
Definition at line 14 of file sqldumpthread.h.
Referenced by run().