2010-12-15 41 views
1

有沒有辦法驗證表格是否存在於HTML5本地數據庫的數據庫中?HTML5數據庫驗證存在表?

我需要創建9個表,並且這個方法會在文檔準備就緒時運行。如果每次頁面啓動,它也調用相同的方法,它會不會浪費內存?我將它用於移動設備(iPhone)。

這是代碼:

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

你的意思是你擁有對數據庫的字段裏面標記至極要請檢查是否它包含一個表或不是? – yoda 2010-12-15 06:57:01

+0

字段內的什麼意思標記? – arkchong 2010-12-15 09:39:49

回答

2

對於你需要這個嗎?如果你擔心,你可以重新創建已經存在於數據庫中的表,需要用這個SQL查詢創建表:

CREATE TABLE IF NOT EXISTS table_name 
+0

我已經使用了'CREATE TABLE IF NOT EXISTS',但是我需要創建9個表格,並且這個方法會在文檔準備就緒時運行。如果每次頁面啓動,它也調用相同的方法,它會不會浪費內存?我將它用於移動設備(iPhone)。 – arkchong 2010-12-15 09:39:06

+0

這是很好的文章可以幫助你 - http://blog.maxaller.name/2010/03/html5-web-sql-database-intro-to-versioning-and-migrations/ 或者你可以將標誌存儲在localStorage之後你在做任何事情之前先創建你所有的表格和文檔,然後檢查這個標誌,但不建議這樣做,因爲用戶可以清除localStorage但是保存數據庫。 – 2010-12-15 10:13:00

+0

我以爲使用localStorage是一個好主意,但就你所說,用戶可能會清除localStorage。 如果我只在文檔上創建單個表格,該怎麼辦?其他表只會在用戶轉到其他「頁面」時創建?創建9個表格會更好嗎? – arkchong 2010-12-15 10:31:45