212 lines
4.2 KiB
C++
212 lines
4.2 KiB
C++
|
|
#include "SqlGenerate.h"
|
|
#include <QMapIterator>
|
|
|
|
SqlGenerate::SqlGenerate()
|
|
{
|
|
|
|
}
|
|
|
|
SqlGenerate::~SqlGenerate()
|
|
{
|
|
|
|
}
|
|
|
|
QString SqlGenerate::createTable(QString table, QMap<QString, QString> map)
|
|
{
|
|
QString content = QString("create table %1 (").arg(table);
|
|
QMapIterator<QString, QString> i(map);
|
|
while (i.hasNext())
|
|
{
|
|
i.next();
|
|
content.append(QString("%1 %2 ").arg(i.key()).arg(i.value()));
|
|
if (i.hasNext())
|
|
{
|
|
content.append(",");
|
|
}
|
|
}
|
|
content.append(")");
|
|
content += QString(";");
|
|
return content;
|
|
}
|
|
|
|
QString SqlGenerate::insertData(QString table, QVariantMap map)
|
|
{
|
|
//insert or replace into
|
|
QString content = QString("insert or replace into %1 (").arg(table);
|
|
QString values = QString("values(");
|
|
QMapIterator<QString, QVariant> i(map);
|
|
while (i.hasNext())
|
|
{
|
|
i.next();
|
|
content.append(QString("%1").arg(i.key()));
|
|
values.append("'" + i.value().toString().replace("'", "''") + "'"); //
|
|
if (i.hasNext())
|
|
{
|
|
content.append(", ");
|
|
values.append(",");
|
|
}
|
|
}
|
|
content.append(") ");
|
|
values.append(")");
|
|
content.append(values);
|
|
content += QString(";");
|
|
return content;
|
|
}
|
|
|
|
QString SqlGenerate::selectWhere(QString table, QStringList Name, QString condition)
|
|
{
|
|
//QString content = QString("select from %1 ").arg(table);
|
|
QString content = QString("select ");// .arg(table);
|
|
QListIterator<QString> i(Name);
|
|
while (i.hasNext())
|
|
{
|
|
i.next();
|
|
if (i.hasNext())
|
|
{
|
|
content += QString(" %1 ,").arg(i.previous());
|
|
}
|
|
else
|
|
{
|
|
content += QString(" %1 ").arg(i.previous());
|
|
}
|
|
i.next();
|
|
|
|
}
|
|
/*for(int i = 0; i < Name.size(); i++)
|
|
{
|
|
if (i + 1 == Name.size())
|
|
{
|
|
content += QString("%1 ").arg(Name.at(i));
|
|
}
|
|
else
|
|
{
|
|
content += QString("%1,").arg(Name.at(i));
|
|
}
|
|
}*/
|
|
content += QString("from %1").arg(table);
|
|
if (!condition.isEmpty())
|
|
{
|
|
content += condition;// QString(" where %1").arg(condition);
|
|
}
|
|
content += QString(";");//
|
|
|
|
|
|
|
|
return content;
|
|
}
|
|
|
|
QString SqlGenerate::selectUnion(QStringList sTables, QStringList Name, QString condition /*= ""*/)
|
|
{
|
|
QString s_select_Data;
|
|
for (int j = 0; j < sTables.size(); j++)
|
|
{
|
|
|
|
QString content = QString("select ");// .arg(table);
|
|
QListIterator<QString> i(Name);
|
|
while (i.hasNext())
|
|
{
|
|
i.next();
|
|
if (i.hasNext())
|
|
{
|
|
content += QString(" %1 ,").arg(i.previous());
|
|
}
|
|
else
|
|
{
|
|
content += QString(" %1 ").arg(i.previous());
|
|
}
|
|
i.next();
|
|
|
|
}
|
|
content += QString("from %1").arg(sTables.at(j));
|
|
|
|
if (s_select_Data.isEmpty())
|
|
{
|
|
s_select_Data = content;
|
|
}
|
|
else
|
|
{
|
|
s_select_Data = s_select_Data + " union all " + content;
|
|
}
|
|
}
|
|
if (!condition.isEmpty())
|
|
{
|
|
s_select_Data += condition;// QString(" where %1").arg(condition);
|
|
}
|
|
s_select_Data += QString(";");//
|
|
|
|
return s_select_Data;
|
|
}
|
|
|
|
QString SqlGenerate::createIndex(QString table, QString name)
|
|
{
|
|
QString content = QString("create index %1_index on %2 (%3)").arg(name).arg(table).arg(name);
|
|
content += QString(";");//
|
|
return content;
|
|
}
|
|
|
|
QString SqlGenerate::updateData(QString table, QVariantMap map, QString condition)
|
|
{
|
|
QString content = QString("update %1 set ").arg(table);
|
|
QMapIterator<QString, QVariant>i(map);
|
|
while (i.hasNext())
|
|
{
|
|
i.next();
|
|
if (i.hasNext())
|
|
{
|
|
content += QString("%1 = '%2',").arg(i.key()).arg(i.value().toString().replace("'", "''"));
|
|
}
|
|
else
|
|
{
|
|
content += QString("%1= '%2' ").arg(i.key()).arg(i.value().toString().replace("'", "''"));
|
|
}
|
|
|
|
}
|
|
content += QString("where %1").arg(condition);
|
|
content += QString(";");
|
|
return content;
|
|
}
|
|
|
|
QString SqlGenerate::deleteData(QString table, QString condition)
|
|
{
|
|
QString content = QString("delete %1 ").arg(table);
|
|
content += QString("where '%1'").arg(condition);
|
|
content += QString(";");
|
|
return content;
|
|
}
|
|
|
|
bool SqlGenerate::checkCheckParameterSql(const QString& str)
|
|
{
|
|
QStringList keys;
|
|
keys << "and";
|
|
keys << "or";
|
|
keys << "*";
|
|
keys << "=";
|
|
keys << " ";
|
|
keys << "%0a";
|
|
keys << "%0d";
|
|
keys << "%";
|
|
keys << "/";
|
|
keys << "union";
|
|
keys << "|";
|
|
keys << "&";
|
|
keys << "^";
|
|
keys << "#";
|
|
keys << "/*";
|
|
keys << "*/";
|
|
keys << "delete";
|
|
keys << "insert";
|
|
keys << "select";
|
|
keys << "update";
|
|
keys << "drop";
|
|
for (int i = 0; i < keys.size(); i++)
|
|
{
|
|
if (str.contains(keys[i])) // != string::npos)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|