dans le modèle, sinon l'identifiant donné à la fonction ne sera plus valide. Au contraire,
dans le cas d'un ajout ou d'une modification, l'appel à la base de données doit se faire
après l'ajout dans le modèle, sinon la fonction n'aura rien à lire.
Button {
text: "Sauvegarder"
onClicked: {
var contents = …
if (booksList.currentRow >= 0) {
bookModel.set(booksList.currentRow, contents);
updateBook(booksList.currentRow);
} else { // Create an item.
bookModel.append(contents);
addBook(bookModel.count - 1);
}
}
}
Button {
text: "Supprimer"
onClicked:
if (booksList.currentRow >= 0) {
removeBook(booksList.currentRow);
bookModel.remove(booksList.currentRow);
}
}
Quid de l'efficacité ?
Ajouter une base de données dans l'application pour charger les livres et genres
d'origine a fortement augmenté le temps de lancement — même sur une machine
puissante, l'application passe maintenant par une fenêtre blanche avant d'afficher
son contenu. Lors de la mise à jour de la base, la situation est différente, car les
modifications sont assez légères. Cependant, pour une application complexe, ces
modifications pourraient se traduire par un plus grand nombre de requêtes, donc un
manque de réactivité de l'application lors de la répercussion de ces informations.
En premier lieu, il faut éviter de recopier tout le modèle à la fermeture de
l'application, c'est-à-dire de vider entièrement les tables en base de données et
d'écrire chaque genre et chaque livre. Cela gaspillerait inutilement des ressources,
vu que seul un sous-ensemble des données a été modifié. La fermeture de
l'application pourrait ainsi prendre très longtemps, ce qui risque d'exaspérer
l'utilisateur (à qui le système d'exploitation pourrait proposer de fermer la fenêtre
non réactive, la pensant plantée !).
367
dans le cas d'un ajout ou d'une modification, l'appel à la base de données doit se faire
après l'ajout dans le modèle, sinon la fonction n'aura rien à lire.
Button {
text: "Sauvegarder"
onClicked: {
var contents = …
if (booksList.currentRow >= 0) {
bookModel.set(booksList.currentRow, contents);
updateBook(booksList.currentRow);
} else { // Create an item.
bookModel.append(contents);
addBook(bookModel.count - 1);
}
}
}
Button {
text: "Supprimer"
onClicked:
if (booksList.currentRow >= 0) {
removeBook(booksList.currentRow);
bookModel.remove(booksList.currentRow);
}
}
Quid de l'efficacité ?
Ajouter une base de données dans l'application pour charger les livres et genres
d'origine a fortement augmenté le temps de lancement — même sur une machine
puissante, l'application passe maintenant par une fenêtre blanche avant d'afficher
son contenu. Lors de la mise à jour de la base, la situation est différente, car les
modifications sont assez légères. Cependant, pour une application complexe, ces
modifications pourraient se traduire par un plus grand nombre de requêtes, donc un
manque de réactivité de l'application lors de la répercussion de ces informations.
En premier lieu, il faut éviter de recopier tout le modèle à la fermeture de
l'application, c'est-à-dire de vider entièrement les tables en base de données et
d'écrire chaque genre et chaque livre. Cela gaspillerait inutilement des ressources,
vu que seul un sous-ensemble des données a été modifié. La fermeture de
l'application pourrait ainsi prendre très longtemps, ce qui risque d'exaspérer
l'utilisateur (à qui le système d'exploitation pourrait proposer de fermer la fenêtre
non réactive, la pensant plantée !).
367
