2010-12-15 70 views
1

Existe-t-il un moyen de vérifier si la table existe dans la base de données dans la base de données locale HTML5?Base de données HTML5 pour vérifier la table existante?

Je dois créer 9 tables, et cette méthode s'exécutera lorsque le document sera prêt. Si à chaque fois que la page commence, elle appelle aussi la même méthode, ne sera-t-elle pas un gaspillage de mémoire? Je l'utilise pour l'appareil mobile (iPhone).

Voici le code:

try{ 
       if(!window.openDatabase){ 
        alert('DB not supported.'); 
       }else{ 
        var shortName = 'abc'; 
        var version = '1.0'; 
        var displayName = 'ABC'; 
        var maxSize = 3145728; 
        var tableName = ['business', 'politic', 'firstread', 'commentary','features', 'insiderasia', 'management', 'media']; 
        db = openDatabase(shortName, version, displayName, maxSize); 

        $.each(tableName, function(theCount, value){ 
         db.transaction(
          function(transaction){ 
           transaction.executeSql('CREATE TABLE IF NOT EXISTS '+ value +' (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, link TEXT NOT NULL, title TEXT NOT NULL, author TEXT NOT NULL, pubdate TEXT NOT NULL, imgLink TEXT NULL, desc TEXT NOT NULL, day TEXT NOT NULL);'); 
         }); 
        }); 
       } 
      }catch(e){ 
       if(e == INVALID_STATE_ERR){ 
        console.log('invalid database version.'); 
       }else{ 
        console.log('unknown error ' + e + '.'); 
       } 
       return; 
      } 
+0

vous voulez dire que vous avez le balisage dans un champ sur la base de données Wich vous voulez vérifier wether il contient une table ou pas? – yoda

+0

quel balisage moyen à l'intérieur d'un champ? – arkchong

Répondre

2

Pour ce que vous avez besoin? Si vous vous inquiétez de ce que vous pouvez recréer table qui existe déjà dans votre base de données, vous devez créer votre table avec cette requête SQL:

CREATE TABLE IF NOT EXISTS table_name 
+0

J'ai utilisé 'CREATE TABLE IF NOT EXISTS', mais j'ai besoin de créer 9 tables, et cette méthode sera exécutée lorsque le document sera prêt. Si à chaque fois que la page commence, elle appelle aussi la même méthode, ne sera-t-elle pas un gaspillage de mémoire? Je l'utilise pour l'appareil mobile (iPhone). – arkchong

+0

C'est bon article peut vous aider - http://blog.maxaller.name/2010/03/html5-web-sql-database-intro-to-versioning-and-migrations/ ou vous pouvez stocker drapeau dans localStorage après vous créez toutes vos tables et sur document prêt avant de faire quoi que ce soit d'abord vérifier ce drapeau, mais ce n'est pas recommandé, car l'utilisateur peut effacer localStorage, mais enregistrer les bases de données. –

+0

Je pensais que l'utilisation de localStorage est une bonne idée, mais comme vous l'avez dit, l'utilisateur pourrait effacer le localStorage. Que faire si je ne crée qu'une seule table sur le document prêt? l'autre table créera seulement quand l'utilisateur va à l'autre 'page'? sera-t-il préférable de créer 9 tables? – arkchong