Maison  >  Article  >  interface Web  >  Stockage local HTML5 - Détails de la base de données Web SQL

Stockage local HTML5 - Détails de la base de données Web SQL

黄舟
黄舟original
2017-03-21 15:06:131218parcourir

Dans HTML5 WebStorage introduit le stockage local et le stockage Session du stockage local HTML5. Ces deux solutions sont des solutions de stockage par paire clé-valeur, qui sont utiles pour stocker une petite quantité de structures de données. . Mais vous ne pouvez rien faire avec une grande quantité de données structurées, et elles ne sont pas assez flexibles.

Base de données Web SQL

Nous traitons souvent une grande quantité de données structurées dans la base de données HTML5 introduit le concept de base de données Web SQL, qui utilise SQL pour manipuler l'API. de la base de données client, ces API sont asynchrones et le dialecte utilisé dans la spécification est SQLlite. C'est là que la tragédie se produit. La page de spécification de la base de données Web SQL contient une telle déclaration

Stockage local HTML5 - Détails de la base de données Web SQL

<.>

Ce document était sur la voie des recommandations du W3C mais le travail de spécification s'est arrêté. La spécification est arrivée dans une impasse : tous les implémenteurs intéressés ont utilisé le même backend SQL (Sqlite), mais nous avons besoin de plusieurs implémentations indépendantes pour poursuivre sur la voie de la standardisation. .

Cela signifie probablement

Ce document figurait autrefois sur la spécification recommandée par le W3C, mais le travail de spécification s'est arrêté. Nous sommes dans une impasse : toutes les implémentations actuelles sont basées sur le même backend SQL (SQLite), mais nous avons besoin d'implémentations plus indépendantes pour les standardiser.

En d’autres termes, il s’agit d’un standard abandonné, bien que certains navigateurs l’aient implémenté. . . . . . .

Trois méthodes principales

Mais il n'y a aucun mal à l'apprendre, et nous pouvons la comparer avec IndexedDB, actuellement promue par le W3C, pour voir pourquoi cette solution devrait être abandonnée. Trois méthodes principales définies dans la spécification Web SQL Database :

  1. openDatabase : Cette méthode utilise une base de données existante ou une nouvelle base de données pour

    créer une base de données objet

  2. transaction : Cette méthode nous permet de contrôler la validation ou le rollback de la transaction selon la situation

  3. executeSql : Cette méthode est utilisée pour exécuter SQL

    Requête

openDatabase

Nous pouvons utiliser une instruction aussi simple pour créer ou ouvrir un objet de base de données locale

var db = openDatabase(&#39;testDB&#39;, &#39;1.0&#39;, &#39;Test DB&#39;, 2 * 1024 * 1024);
openDatabase Reçoit cinq paramètres :

  1. Nom de la base de données

  2. Numéro de version de la base de données

  3. Nom d'affichage

  4. La taille des données enregistrées dans la base de données (en octets)

  5. Fonction de rappel (facultatif)

Si une fonction de rappel est fournie, la fonction de rappel est utilisée pour appeler la fonction changeVersion() Quel que soit le numéro de version donné, la fonction de rappel définira le numéro de version de la base de données comme étant vide. Si aucune fonction de rappel n'est fournie, la base de données est créée avec le numéro de version donné.

transaction

La méthode de transaction est utilisée pour traiter les transactions. Lorsqu'une instruction ne parvient pas à s'exécuter, la transaction entière est annulée. La méthode a trois paramètres

  1. Une méthode contenant le contenu de la transaction

  2. Fonction de rappel de réussite d'exécution (facultatif)

  3. Fonction de rappel d'échec d'exécution (facultatif)

db.transaction(function (context) {
           context.executeSql(&#39;CREATE TABLE IF NOT EXISTS testTable (id unique, name)&#39;);
           context.executeSql(&#39;INSERT INTO testTable (id, name) VALUES (0, "Byron")&#39;);
           context.executeSql(&#39;INSERT INTO testTable (id, name) VALUES (1, "Casper")&#39;);
           context.executeSql(&#39;INSERT INTO testTable (id, name) VALUES (2, "Frank")&#39;);
         });
Dans cet exemple, nous créons une table et insérons trois éléments de données dans la table. L'une des quatre instructions d'exécution. apparaît Une erreur, la transaction entière sera annulée

executeSql

la méthodeexecuteSql est utilisée pour exécuter des instructions SQL et renvoyer des résultats La méthode a quatre paramètres

    <.>Query
  1. String

  2. Paramètre utilisé pour remplacer le point d'interrogation dans la chaîne de requête
  3. Fonction de rappel de réussite d'exécution ( facultatif)
  4. Fonction de rappel d'échec d'exécution (facultatif)

  5. Dans le exemple ci-dessus Nous avons utilisé l'instruction insert, regardons un exemple de requête

Exemple complet
db.transaction(function (context) {
           context.executeSql(&#39;SELECT * FROM testTable&#39;, [], function (context, results) {            
           var len = results.rows.length, i;
            console.log(&#39;Got &#39;+len+&#39; rows.&#39;);               
            for (i = 0; i < len; i++){
              console.log(&#39;id: &#39;+results.rows.item(i).id);
              console.log(&#39;name: &#39;+results.rows.item(i).name);
            }
         });

Enfin

    Web SQL Database
    

Parce que la spécification de la base de données Web SQL a été abandonnée , la raison est indiquée. Il est très clair que la spécification SQL actuelle utilise le dialecte SQL de SQLite, et en tant que standard, cela est inacceptable car chaque navigateur a sa propre implémentation qui perturbe toujours le standard. De cette façon, la compatibilité des navigateurs n’est pas importante, et elle sera probablement oubliée au fur et à mesure. Mais

La console de Chrome

est vraiment simple à utiliser, Shenmacookie, Local Storage, Session Storage, Web SQL, IndexedDB, Application Cache et autres html5 Le contenu nouvellement ajouté est clairement visible, éliminant ainsi beaucoup de travail de code de débogage.

Stockage local HTML5 - Détails de la base de données Web SQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn