You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wheeldetect/tpvs17/lpReport/gensql.cpp

117 lines
3.1 KiB
C++

#include "gensql.h"
#include <QVariantMap>
#include "QStringList"
QString gensql::genInsertData(const QString & strTableName, const QVariantMap &vMap)
{
QString strInsert = "INSERT INTO %1(%2) VALUES(%3)";
QString strHeader;//
QString strValue;//
QStringList strKeys = vMap.keys();
for (int i = 0; i < strKeys.size(); i++) {
strHeader += strKeys[i];
if (i + 1 < strKeys.size())
strHeader += ",";
strValue += "'" + vMap[strKeys[i]].toString() + "'";
if (i + 1 < strKeys.size())
strValue += ",";
}
strInsert = strInsert.arg(strTableName, strHeader, strValue);
return strInsert;
}
QString gensql::genSelect(const QString & strTableName, QStringList strSelectList, QString strClass)
{
QString strDstSelect;
if (strClass.isEmpty()) {
strDstSelect = "SELECT %1 FROM %2";
}
else {
strDstSelect = "SELECT %1 FROM %2 WHERE " + strClass;
}
if (0 == strSelectList.size()) {
strDstSelect = strDstSelect.arg("*").arg(strTableName);
}
else {
QString strSeletTmp = strSelectList[0];
for (int i = 1; i < strSelectList.size(); i++) {
strSeletTmp += "," + strSelectList[i];
}
strDstSelect = strDstSelect.arg(strSeletTmp, strTableName);
}
return strDstSelect;
}
QString gensql::genClass(QString strName, QString strValue)
{
QString strDst = "";
strDst += strName + " = '" + strValue + "'";
return strDst;
}
QString gensql::genUpdate(const QString & strTableName, QVariantMap &vMap, QString strClass)
{
QString strDst = "";//
if (strClass.isEmpty()) {
strDst = "UPDATE %1 SET %2";//全部修改
}
else {
strDst = "UPDATE %1 SET %2 WHERE %3";//指定修改
}
QString strUpdateTmp = "";
if (vMap.size() != 0) {
QStringList strList = vMap.keys();
strUpdateTmp += gensql::genClass(strList[0], vMap[strList[0]].toString());
for (int i = 1; i < strList.size(); i++) {
strUpdateTmp += "," + gensql::genClass(strList[i], vMap[strList[i]].toString());
}
}
strDst = strDst.arg(strTableName, strUpdateTmp, strClass);
return strDst;
}
QString gensql::genDeleteData(const QString & strTableName, QString strClass)
{
QString strDst;
if (strClass.isEmpty()) {
strDst = "DELETE FROM %1";//全部删除
}
else {
strDst = "DELETE FROM %1 WHERE %2";//指定删除
}
strDst = strDst.arg(strTableName, strClass);
return strDst;
}
QString gensql::genInsertColumn(const QString & strTableName, QString strName, QString strType)
{
QString strDst = "ALTER TABLE %1 ADD COLUMN %2 %3";
strDst = strDst.arg(strTableName).arg(strName).arg(strType);
return strDst;
}
QString gensql::genDeleteColumn(const QString & strTableName, QString strColumnName)
{
QString strDst = "ALTER TABLE %1 DROP %2";
strDst = strDst.arg(strTableName, strColumnName);
return strDst;
}
QString gensql::genCreateTabel(const QString strTable, QString strPrimary, QString strType, QVariantMap &vMap)
{
QString strDst = "CREATE TABLE IF NOT EXISTS %1 (%2)";
QString strColumn = strPrimary + " " + strType;
QStringList strList = vMap.keys();
for (int i = 0; i < strList.size(); i++) {
strColumn += ", " + strList[i] + " " + vMap[strList[i]].toString();
}
strDst = strDst.arg(strTable, strColumn);
return strDst;
}