tx.executeSql("INSERT INTO genres " +
"(genre) " +
"VALUES ('Nonfiction');");
tx.executeSql("INSERT INTO books " +
"(title, author, genre_id) " +
"VALUES ('Προμηθεὺς δεσμώτης', " +
"'Αἰσχύλος', " + id_nonfiction + ");");
}
);
Tableau 17.1 : Valeur de retour de tx.executeSql
Requête SQL Valeur importante
SELECT
returnedRows.rows.length : nombre de valeurs sélectionnées
returnedRows.rows.item(i) : ligne i de la sélection
INSERT
insertedId : identifiant de la nouvelle ligne
UPDATE, DELETE rowsAffected : nombre de lignes modifiées
La fonction tx.executeSql permet également l'utilisation de paramètres positionnels
dans les requêtes. Concrètement, il s'agit d'utiliser des points d'interrogation ? dans la
requête SQL, puis de passer un tableau de valeurs en deuxième argument. Les points
d'interrogation seront remplacés par les valeurs correspondantes dans le tableau.
tx.executeSql("INSERT INTO books " +
"(title, author, genre_id) " +
"VALUES (?, ?, ?);",
["Προμηθεύς δεσμώτης", "Αἰσχύλος", id_nonfiction]);
Cette manière de procéder a deux avantages. Le premier est que la construction de la
requête est plus simple : il n'est pas nécessaire de faire appel à de la concaténation de
chaînes de caractères. Le second est plus pragmatique : cette manière de faire est bien
plus sécurisée. Même en donnant des valeurs très compliquées aux paramètres, il ne
sera pas possible de modifier le sens de la requête (par exemple, la faire modifier des
données sensibles). Ce genre de faille se nomme injection SQL.
363
Précédent

- 364/494

Suivant