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",
|
||||
// "desc")->first();
|
||||
ChangeLogTable *u
|
||||
= changeLogs->createQuery()->orderBy("id", "desc")->first();
|
||||
= changeLogs->query()->orderBy("id", "desc")->first();
|
||||
|
||||
DatabaseModel ret;
|
||||
|
||||
|
|
|
|||
16
src/query.h
16
src/query.h
|
|
@ -72,6 +72,8 @@ public:
|
|||
// Query<T> *setWhere(const QString &where);
|
||||
Query<T> *orderBy(QString fieldName, QString type);
|
||||
Query<T> *orderBy(WherePhrase phrase);
|
||||
|
||||
int update(WherePhrase phrase);
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
|
|
@ -309,6 +311,20 @@ Q_OUTOFLINE_TEMPLATE Query<T> *Query<T>::orderBy(WherePhrase phrase)
|
|||
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
|
||||
|
||||
#endif // QUERY_H
|
||||
|
|
|
|||
|
|
@ -431,6 +431,22 @@ QString SqlGeneratorBase::deleteCommand(QList<WherePhrase> &wheres, QString tabl
|
|||
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
|
||||
{
|
||||
switch (v.type()) {
|
||||
|
|
|
|||
|
|
@ -92,6 +92,8 @@ public:
|
|||
|
||||
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 phrase(const PhraseData *d) const;
|
||||
virtual QString operatorString(const PhraseData::Condition &cond) const;
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public:
|
|||
int length() const;
|
||||
T *at(int i) const;
|
||||
const T &operator[](int i) const;
|
||||
Query<T> *createQuery();
|
||||
Query<T> *query();
|
||||
};
|
||||
|
||||
template<class T>
|
||||
|
|
@ -68,7 +68,7 @@ Q_OUTOFLINE_TEMPLATE TableSet<T>::TableSet(Table *parent) : TableSetBase(parent)
|
|||
}
|
||||
|
||||
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);
|
||||
|
||||
|
|
|
|||
|
|
@ -164,6 +164,17 @@ WherePhrase WherePhrase::operator >=(const 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)
|
||||
{
|
||||
return WherePhrase(this, PhraseData::Set, (WherePhrase*)&other);
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ public:
|
|||
WherePhrase operator <=(const WherePhrase &other);
|
||||
WherePhrase operator >=(const WherePhrase &other);
|
||||
|
||||
WherePhrase operator !();
|
||||
WherePhrase operator =(const WherePhrase &other);
|
||||
|
||||
WherePhrase operator +(const WherePhrase &other);
|
||||
|
|
@ -149,8 +150,8 @@ public:
|
|||
WherePhrase operator !();
|
||||
|
||||
WherePhrase isNull();
|
||||
WherePhrase in(QVariantList list);
|
||||
WherePhrase in(QStringList list);
|
||||
WherePhrase in(QList<T> list);
|
||||
// WherePhrase in(QStringList list);
|
||||
WherePhrase like(QString pattern);
|
||||
};
|
||||
|
||||
|
|
@ -191,16 +192,20 @@ Q_OUTOFLINE_TEMPLATE WherePhrase FieldPhrase<T>::isNull(){
|
|||
}
|
||||
|
||||
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>
|
||||
Q_OUTOFLINE_TEMPLATE WherePhrase FieldPhrase<T>::in(QStringList list)
|
||||
{
|
||||
return WherePhrase(this, PhraseData::In, list);
|
||||
}
|
||||
//template<typename T>
|
||||
//Q_OUTOFLINE_TEMPLATE WherePhrase FieldPhrase<T>::in(QStringList list)
|
||||
//{
|
||||
// return WherePhrase(this, PhraseData::In, list);
|
||||
//}
|
||||
|
||||
template<typename T>
|
||||
Q_OUTOFLINE_TEMPLATE WherePhrase FieldPhrase<T>::like(QString pattern)
|
||||
|
|
|
|||
Loading…
Reference in New Issue