2010-04-22 87 views
26

海蘭那裏,HTML5數據庫存儲(SQL精簡版) - 幾個問題

我不能對HTML5數據庫存儲用法示例(CRUD)

我打開網絡上找到足夠的資源初學者(創建)我的數據庫是這樣的:

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; 
    } 
}); 

問題1:我可以在一個域上創建和使用多少個數據庫? 問題2.如何刪除(刪除)數據庫。 - >我還沒有想出來。

要創建SQL查詢使用事務:

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); 
    }); 
} 

問題3:如何因此,如果表中存在的上述transaciton失敗了嗎?是否涉及nullDataHandler來做到這一點? Web上的哪裏有解釋executeSql API的文檔?參數?

THX

+0

嘿我已經寫出了這個基本的用戶指南,其中有幾個解決的例子....希望他們可以有一些幫助.... http://mnesia.wikispaces.com/HTML5+and+webstorage作爲現在我認爲沒有人真正關注基於WEB SQL的存儲....並且這是可以理解的......基於密鑰對的本地存儲系統對大多數Web應用程序都能很好地工作....讓我想起與RDBMS相比,redis和memcache是​​如何發揮作用的...尤其對於那些不需要那種數據結構的應用程序... – Sid 2010-07-06 20:37:26

回答

32

你要找的規範是Web SQL Database。快速閱讀提示:

  1. 沒有限制,但一旦你的數據庫增加超過一定規模(5MB似乎是默認值),瀏覽器會提示用戶允許更多的空間。
  2. 在當前的規範中,沒有辦法刪除數據庫。
  3. executeSql()函數接受一個可選的錯誤回調參數。

HTML5 Doctor也有很好的介紹。不過,我建議你看看Indexed DB。由於沒有SQL/SQLite標準,Web SQL基本上被放棄了。即使微軟已經認可索引數據庫。見Consensus emerges for key Web app standard

+0

謝謝Jeff。我幾乎完成了Consesus的閱讀 - 這是非常豐富的,正如你所說的其餘部分。 如您所見,點和答案已添加。 但是在我離開之前,我現在應該用什麼來存儲用戶數據?這不是很多數據..但我需要記住的用戶..像一些網站地址等..所以下次他登錄列表將在旁邊列表。 現在,要提及它是一個iPhone Web應用程序 - >這就是爲什麼我使用WEB DB。 (但我不喜歡它)。 – PathOfNeo 2010-04-27 17:28:47

+0

在你的口袋裏有一些html5功能是很棒的。我喜歡:sessionStorage和localStorage機制...我停止使用query_string並將這兩者傳遞給所需的數據。 我只是不太確定多久,localStorage的持久性有多少,除此之外還有其他一些原因,我認爲WEB DB會做得很好。 – PathOfNeo 2010-04-27 17:30:30

+1

使用localStorage存儲的數據應該保留,直到用戶決定清除它(設置> Safari>數據庫)。我建議看看Apple的文檔:http://developer.apple.com/safari/library/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007256-CH1-SW1 – 2010-04-28 01:50:56

2
CREATE TABLE IF NOT EXISTS table_name 

僅當if不存在時纔會創建表table_name

1

我發現下面的WebSQL的基本的CRUD操作教程有用,因爲它們含有的例子,並解釋了代碼是這樣做的:

而下面的鏈接對於SequelSphere(HTML5 JavaScript SQL Relational Database替代WebSQL,適用於所有瀏覽器,將數據存儲在LocalStorage和IndexedDB中):

+0

Web SQL數據庫[已棄用](http://www.w3.org/TR/webdatabase/),不是嗎? – Maxbester 2013-02-12 12:08:10

+1

@Maxbester它不被棄用。一旦所有供應商實現了相同的SQL引擎SQLite,W3並不會改進websql的文檔,但它仍然是一個文檔化的功能,並且將繼續成爲標準定義的一部分。 – 2015-04-28 18:26:01

1

使用PersistenceJS有一個persistence.reset API將擦乾淨的數據庫。 PersistenceJS Site

對於開發/測試目的,您可以查看內容,並通過在該網址在Chrome搜索您的域名刪除的WebSQL,是IndexedDB,餅乾等:

chrome://settings/cookies 

在那裏,你可以刪除所有存儲域或只是某些本地存儲實體。是的,該網址只包含'cookies',但該網址的界面包含所有類型的離線存儲。

如果Chrome開發人員工具界面能夠在「資源」選項卡中右鍵單擊並刪除數據存儲實體並檢查內容,那將會很棒。但就目前而言,我所知道的僅僅是settings/cookies網址。

1

它支持iOS safari,chrome和opera的某些最新版本.... 它尚未被IE和Firefox採用就是這樣......除了瀏覽器上的本地db,它有關係數據庫系統......這樣你們可以方便地查詢並處理複雜的數據....這是在關鍵淡水河谷爲基礎的系統非常艱難..

看完記得它甚至可以支持高達GB的一個。我我不知道....

注:

1)我想提一點,有一個名爲Dashcode的IDE,它讓我們構建看起來像iOS本機的web應用程序。甚至還使用了web SQL。

2)實際上網絡SQL是瀏覽器上的SQLite的實現。

3)SQLite是最者優先在兩個iOS和Android作爲分貝爲本地代碼..

的SQLite的缺點:

缺乏併發支持但不是一個瀏覽器中的問題,因爲它一次會被單個用戶使用。這在移動設備中也是一個例子。

結論:

的Web SQL是W3這是一個悲哀的事情,所以我們已經探索其他選擇放棄。

+0

Web SQL非常明確地被廢棄了http://www.w3.org/TR/webdatabase/ – neonstalwart 2013-05-10 19:15:14

+1

更具體地說,該規範的支持已被放棄,但是,許多平臺仍然支持這些API。問題是 - 由於規範的進一步開發和支持已經停止,在各種平臺上API支持多久。這就是爲什麼@Jeffery建議遷移到索引數據庫。 – Bamerza 2013-07-20 23:03:15

+0

是的,我同意你所有我沒有清楚地閱讀文件..謝謝指出... – 2013-07-29 09:36:46