web-dev-qa-db-fra.com

Stockage de base de données HTML5 (SQL Lite) - quelques questions

Salut,

Je ne trouve pas suffisamment de ressources pour débutants sur le Web concernant les exemples d'utilisation du stockage de base de données HTML5 (CRUD)

J'ouvre (crée) ma base de données comme ceci:

var db;

$(document).ready(function() 
{

    try
    {
      if (!window.openDatabase) {
            alert('Not Supported -> Please try with a WebKit Browser');
      } else {
          var shortName = 'mydatab';
          var version = '1.0';
          var displayName = 'User Settings Database';
          var maxSize = 3072*1024; //  = 3MB            in bytes 65536
          db = openDatabase(shortName, version, displayName, maxSize);      
          }
    } 
    catch(e) 
    {
      if (e == 2) {

          alert("Invalid database version.");
      } else {
          alert("Unknown error "+e+".");
      }return;
    }
});

QUESTION 1: Combien de bases de données puis-je créer et utiliser sur un domaine? QUESTION 2. Comment supprimer (supprimer) une base de données. -> je n'ai pas encore compris cela.

Pour créer des requêtes SQL que vous utilisez transaction:

function nullDataHandler(transaction, results) { }
function createTables(db)
{
  db.transaction(function (transaction)
  {
    //first query causes the transaction to (intentionally) fail if the table exists.
    transaction.executeSql('CREATE TABLE people(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL DEFAULT "John Doe", shirt TEXT NOT NULL DEFAULT "Purple");', [], nullDataHandler, errorHandler);
  });
}

QUESTION 3: Dans quelle mesure la transaciton ci-dessus a-t-elle échoué si une table existe? Le nullDataHandler est-il impliqué pour ce faire? Où sur le Web existe-t-il une documentation expliquant l'API executeSql? Arguments?

tHX

26
PathOfNeo

La spécification que vous recherchez est Web SQL Database . Une lecture rapide suggère:

  1. Il n'y a pas de limite, bien qu'une fois que vos bases de données augmentent au-delà d'une certaine taille (5 Mo semblent être la valeur par défaut), le navigateur invite l'utilisateur à autoriser plus d'espace.
  2. Il n'y a aucun moyen, dans la spécification actuelle, de supprimer des bases de données.
  3. La fonction executeSql () prend un argument de rappel d'erreur facultatif.

HTML5 Doctor a également une bonne introduction.

À l'avenir, cependant, je recommanderais de regarder DB indexé . Web SQL a été essentiellement abandonné car il n'y a pas de standard pour SQL/SQLite. Même Microsoft a approuvé la base de données indexée. Voir n consensus émerge pour la norme clé de l'application Web .

32
Jeffery To
CREATE TABLE IF NOT EXISTS table_name

va créer une table table_name uniquement si si n'existe pas.

2
Praveen Vijayan

En utilisant PersistenceJS, il existe une API persistence.reset qui nettoiera la base de données. Site PersistenceJS

À des fins de développement/test, vous pouvez afficher le contenu et supprimer webSQL, IndexedDB, cookies, etc. en recherchant votre nom de domaine à cette URL dans Chrome:

chrome://settings/cookies

Là, vous pouvez supprimer tout le stockage d'un domaine ou seulement certaines entités de stockage locales. Oui, l'URL implique uniquement des "cookies", mais l'interface de cette URL comprend tous les types de stockage hors ligne.

Ce serait formidable, je pense, si l'interface des outils de développement Chrome Chrome avait la possibilité de cliquer avec le bouton droit et de supprimer une entité de stockage de données dans l'onglet Ressources tout en inspectant le contenu. Mais pour l'instant, tout ce que je l'URL des paramètres/cookies est connue.

1
i_a

J'ai trouvé les didacticiels WebSQL suivants utiles pour les opérations CRUD de base, car ils contenaient des exemples et expliquaient ce que faisait le code:

Et les liens suivants pour SequelSphere (une base de données relationnelle SQL JavaScript HTML5 Alternative à WebSQL qui fonctionne dans tous les navigateurs, stockant les données dans LocalStorage et IndexedDB):

1
John Fowler

Il est pris en charge sur iOS safari, chrome et certaines dernières versions d'opéra .... il n'est pas encore adopté par IE et Firefox c'est tout ...... ce que l'on peut demander de plus que la base de données locale sur un navigateur qui a un système de base de données relationnel ... afin que vous puissiez l'interroger facilement et gérer des données complexes .... ce qui est très difficile dans le domaine des clés systèmes basés sur ..

Je me souviens avoir lu il prend même en charge jusqu'à un Go . Je ne suis pas sûr ....

Remarque:

1) Je voudrais mentionner un point: il y a un IDE appelé Dashcode qui nous permet de créer des applications Web qui ressemblent à iOS native. Même là, Web SQL est utilisé.

2) en fait web SQL est une implémentation de SQLite sur les navigateurs.

3) SQLite est le plus préféré dans iOS et Android comme db pour le code natif.

Les inconvénients de SQLite:

Le Manque de prise en charge de la concurrence mais qui ne pose pas de problème dans le navigateur car il sera utilisé par un seul utilisateur à la fois ... c'est également le cas dans mobile.

Conclusions:

Web Sql est abandonné par w3 c'est une chose triste donc nous devons explorer d'autres options.

1
Durai Amuthan.H