Update command
This commit is contained in:
parent
c65d0e748c
commit
36a298d5c0
|
|
@ -227,7 +227,7 @@ DatabaseModel DatabasePrivate::getLastScheema()
|
||||||
// ChangeLogTable *u = q->_change_logs()->createQuery()->orderBy("id",
|
// ChangeLogTable *u = q->_change_logs()->createQuery()->orderBy("id",
|
||||||
// "desc")->first();
|
// "desc")->first();
|
||||||
ChangeLogTable *u
|
ChangeLogTable *u
|
||||||
= changeLogs->createQuery()->orderBy("id", "desc")->first();
|
= changeLogs->query()->orderBy("id", "desc")->first();
|
||||||
|
|
||||||
DatabaseModel ret;
|
DatabaseModel ret;
|
||||||
|
|
||||||
|
|
|
||||||
16
src/query.h
16
src/query.h
|
|
@ -72,6 +72,8 @@ public:
|
||||||
// Query<T> *setWhere(const QString &where);
|
// Query<T> *setWhere(const QString &where);
|
||||||
Query<T> *orderBy(QString fieldName, QString type);
|
Query<T> *orderBy(QString fieldName, QString type);
|
||||||
Query<T> *orderBy(WherePhrase phrase);
|
Query<T> *orderBy(WherePhrase phrase);
|
||||||
|
|
||||||
|
int update(WherePhrase phrase);
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
|
@ -309,6 +311,20 @@ Q_OUTOFLINE_TEMPLATE Query<T> *Query<T>::orderBy(WherePhrase phrase)
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
Q_OUTOFLINE_TEMPLATE int Query<T>::update(WherePhrase phrase)
|
||||||
|
{
|
||||||
|
Q_D(Query);
|
||||||
|
|
||||||
|
QString sql = d->database->sqlGenertor()->updateCommand(
|
||||||
|
phrase,
|
||||||
|
d->wheres,
|
||||||
|
d->tableName);
|
||||||
|
qDebug() << sql;
|
||||||
|
QSqlQuery q = d->database->exec(sql);
|
||||||
|
return q.numRowsAffected();
|
||||||
|
}
|
||||||
|
|
||||||
NUT_END_NAMESPACE
|
NUT_END_NAMESPACE
|
||||||
|
|
||||||
#endif // QUERY_H
|
#endif // QUERY_H
|
||||||
|
|
|
||||||
|
|
@ -431,6 +431,22 @@ QString SqlGeneratorBase::deleteCommand(QList<WherePhrase> &wheres, QString tabl
|
||||||
return command;
|
return command;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString SqlGeneratorBase::updateCommand(WherePhrase &phrase, QList<WherePhrase> &wheres, QString tableName)
|
||||||
|
{
|
||||||
|
QString p = this->phrase(phrase.data());
|
||||||
|
QString where = createWhere(wheres);
|
||||||
|
|
||||||
|
QString sql = "UPDATE " + tableName + " SET " + p;
|
||||||
|
|
||||||
|
if(where != "")
|
||||||
|
sql.append(" WHERE " + where);
|
||||||
|
|
||||||
|
for(int i = 0; i < _database->model().count(); i++)
|
||||||
|
sql = sql.replace(_database->model().at(i)->className() + "." , _database->model().at(i)->name() + ".");
|
||||||
|
|
||||||
|
return sql;
|
||||||
|
}
|
||||||
|
|
||||||
QString SqlGeneratorBase::escapeValue(const QVariant &v)const
|
QString SqlGeneratorBase::escapeValue(const QVariant &v)const
|
||||||
{
|
{
|
||||||
switch (v.type()) {
|
switch (v.type()) {
|
||||||
|
|
|
||||||
|
|
@ -92,6 +92,8 @@ public:
|
||||||
|
|
||||||
virtual QString deleteCommand(QList<WherePhrase> &wheres, QString tableName);
|
virtual QString deleteCommand(QList<WherePhrase> &wheres, QString tableName);
|
||||||
|
|
||||||
|
virtual QString updateCommand(WherePhrase &phrase, QList<WherePhrase> &wheres, QString tableName);
|
||||||
|
|
||||||
virtual QString escapeValue(const QVariant &v) const;
|
virtual QString escapeValue(const QVariant &v) const;
|
||||||
virtual QString phrase(const PhraseData *d) const;
|
virtual QString phrase(const PhraseData *d) const;
|
||||||
virtual QString operatorString(const PhraseData::Condition &cond) const;
|
virtual QString operatorString(const PhraseData::Condition &cond) const;
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ public:
|
||||||
int length() const;
|
int length() const;
|
||||||
T *at(int i) const;
|
T *at(int i) const;
|
||||||
const T &operator[](int i) const;
|
const T &operator[](int i) const;
|
||||||
Query<T> *createQuery();
|
Query<T> *query();
|
||||||
};
|
};
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
|
|
@ -68,7 +68,7 @@ Q_OUTOFLINE_TEMPLATE TableSet<T>::TableSet(Table *parent) : TableSetBase(parent)
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
Q_OUTOFLINE_TEMPLATE Query<T> *TableSet<T>::createQuery()
|
Q_OUTOFLINE_TEMPLATE Query<T> *TableSet<T>::query()
|
||||||
{
|
{
|
||||||
Query<T> *q = new Query<T>(_database, this);
|
Query<T> *q = new Query<T>(_database, this);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -164,6 +164,17 @@ WherePhrase WherePhrase::operator >=(const WherePhrase &other)
|
||||||
return WherePhrase(this, PhraseData::GreaterEqual, (WherePhrase*)&other);
|
return WherePhrase(this, PhraseData::GreaterEqual, (WherePhrase*)&other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WherePhrase WherePhrase::operator !()
|
||||||
|
{
|
||||||
|
if(_data->operatorCond < 20)
|
||||||
|
_data->operatorCond = (PhraseData::Condition)((_data->operatorCond + 10) % 20);
|
||||||
|
else
|
||||||
|
qFatal("Operator ! can not aplied to non condition statements");
|
||||||
|
|
||||||
|
return this;//WherePhrase(this, PhraseData::Not);
|
||||||
|
}
|
||||||
|
|
||||||
WherePhrase WherePhrase::operator =(const WherePhrase &other)
|
WherePhrase WherePhrase::operator =(const WherePhrase &other)
|
||||||
{
|
{
|
||||||
return WherePhrase(this, PhraseData::Set, (WherePhrase*)&other);
|
return WherePhrase(this, PhraseData::Set, (WherePhrase*)&other);
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,7 @@ public:
|
||||||
WherePhrase operator <=(const WherePhrase &other);
|
WherePhrase operator <=(const WherePhrase &other);
|
||||||
WherePhrase operator >=(const WherePhrase &other);
|
WherePhrase operator >=(const WherePhrase &other);
|
||||||
|
|
||||||
|
WherePhrase operator !();
|
||||||
WherePhrase operator =(const WherePhrase &other);
|
WherePhrase operator =(const WherePhrase &other);
|
||||||
|
|
||||||
WherePhrase operator +(const WherePhrase &other);
|
WherePhrase operator +(const WherePhrase &other);
|
||||||
|
|
@ -149,8 +150,8 @@ public:
|
||||||
WherePhrase operator !();
|
WherePhrase operator !();
|
||||||
|
|
||||||
WherePhrase isNull();
|
WherePhrase isNull();
|
||||||
WherePhrase in(QVariantList list);
|
WherePhrase in(QList<T> list);
|
||||||
WherePhrase in(QStringList list);
|
// WherePhrase in(QStringList list);
|
||||||
WherePhrase like(QString pattern);
|
WherePhrase like(QString pattern);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -191,16 +192,20 @@ Q_OUTOFLINE_TEMPLATE WherePhrase FieldPhrase<T>::isNull(){
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
Q_OUTOFLINE_TEMPLATE WherePhrase FieldPhrase<T>::in(QVariantList list)
|
Q_OUTOFLINE_TEMPLATE WherePhrase FieldPhrase<T>::in(QList<T> list)
|
||||||
{
|
{
|
||||||
return WherePhrase(this, PhraseData::In, list);
|
QVariantList vlist;
|
||||||
|
foreach (T t, list)
|
||||||
|
vlist.append(QVariant::fromValue(t));
|
||||||
|
|
||||||
|
return WherePhrase(this, PhraseData::In, vlist);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
//template<typename T>
|
||||||
Q_OUTOFLINE_TEMPLATE WherePhrase FieldPhrase<T>::in(QStringList list)
|
//Q_OUTOFLINE_TEMPLATE WherePhrase FieldPhrase<T>::in(QStringList list)
|
||||||
{
|
//{
|
||||||
return WherePhrase(this, PhraseData::In, list);
|
// return WherePhrase(this, PhraseData::In, list);
|
||||||
}
|
//}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
Q_OUTOFLINE_TEMPLATE WherePhrase FieldPhrase<T>::like(QString pattern)
|
Q_OUTOFLINE_TEMPLATE WherePhrase FieldPhrase<T>::like(QString pattern)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue