HTML5 Web SQL 資料庫簡介
導讀 | Web SQL 資料庫 API 並不是 HTML5 規範的一部分,但是它是一個獨立的規範,引入了一組使用 SQL 操作客戶端資料庫的 APIs。 |
Web SQL 資料庫可以在最新版的 Safari, Chrome 和 Opera 瀏覽器中工作。
核心方法
以下是規範中定義的三個核心方法:
- openDatabase:這個方法使用現有的資料庫或者新建的資料庫建立一個資料庫物件。
- transaction:這個方法讓我們能夠控制一個事務,以及基於這種情況執行提交或者回滾。
- executeSql:這個方法用於執行實際的 SQL 查詢。
開啟資料庫
我們可以使用 openDatabase() 方法來開啟已存在的資料庫,如果資料庫不存在,則會建立一個新的資料庫,使用程式碼如下:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
openDatabase() 方法對應的五個引數說明:
- 資料庫名稱
- 版本號
- 描述文字
- 資料庫大小
- 建立回撥
第五個引數,建立回撥會在建立資料庫後被呼叫。
執行查詢操作
執行操作使用 database.transaction() 函式:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); });
上面的語句執行後會在 'mydb' 資料庫中建立一個名為 LOGS 的表。
插入資料
在執行上面的建立表語句後,我們可以插入一些資料:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "菜鳥教程")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, ")'); });
我們也可以使用動態值來插入資料:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id,log) VALUES (?, ?)', [e_id, e_log]); });
例項中的 e_id 和 e_log 是外部變數,executeSql 會對映陣列引數中的每個條目給 "?"。
讀取資料
以下例項演示瞭如何讀取資料庫中已經存在的資料:
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "菜鳥教程")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, ")');}); db.transaction(function (tx) { tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) { var len = results.rows.length, i; msg = "<p>查詢記錄條數: " + len + "</p>"; document.querySelector('#status').innerHTML += msg; for (i = 0; i < len; i++){ alert(results.rows.item(i).log ); } }, null);});
完整例項
例項
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);var msg; db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "菜鳥教程")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, ")'); msg = '<p>資料表已建立,且插入了兩條資料。</p>'; document.querySelector('#status').innerHTML = msg;}); db.transaction(function (tx) {tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) { var len = results.rows.length, i; msg = "<p>查詢記錄條數: " + len + "</p>"; document.querySelector('#status').innerHTML += msg; for (i = 0; i < len; i++){ msg = "<p><b>" + results.rows.item(i).log + "</b></p>"; document.querySelector('#status').innerHTML += msg; }}, null);});
以上例項執行結果如下圖所示:
刪除記錄
刪除記錄使用的格式如下:
db.transaction(function (tx) { tx.executeSql('DELETE FROM LOGS WHERE id=1'); });
刪除指定的資料id也可以是動態的:
db.transaction(function(tx) { tx.executeSql('DELETE FROM LOGS WHERE id=?', [id]); });
更新記錄
更新記錄使用的格式如下:
db.transaction(function (tx) { tx.executeSql('UPDATE LOGS SET log=\'\' WHERE id=2'); });
更新指定的資料id也可以是動態的:
db.transaction(function(tx) { tx.executeSql('UPDATE LOGS SET log=\'\' WHERE id=?', [id]); });
完整例項
例項
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);var msg; db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (1, "菜鳥教程")'); tx.executeSql('INSERT INTO LOGS (id, log) VALUES (2, ")'); msg = '<p>資料表已建立,且插入了兩條資料。</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function (tx) { tx.executeSql('DELETE FROM LOGS WHERE id=1'); msg = '<p>刪除 id 為 1 的記錄。</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function (tx) { tx.executeSql('UPDATE LOGS SET log=\'\' WHERE id=2'); msg = '<p>更新 id 為 2 的記錄。</p>'; document.querySelector('#status').innerHTML = msg; }); db.transaction(function (tx) { tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) { var len = results.rows.length, i; msg = "<p>查詢記錄條數: " + len + "</p>"; document.querySelector('#status').innerHTML += msg; for (i = 0; i < len; i++){ msg = "<p><b>" + results.rows.item(i).log + "</b></p>"; document.querySelector('#status').innerHTML += msg; } }, null); });
以上例項執行結果如下圖所示:
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2930894/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- HTML5 Web Workers簡介HTMLWeb
- ASP.NET MVC – SQL 資料庫簡介ASP.NETMVCSQL資料庫
- ASP.NET Web Forms – 資料庫連線簡介ASP.NETWebORM資料庫
- MongoDB資料庫簡介MongoDB資料庫
- NewSQL資料庫簡介SQL資料庫
- 資料庫介紹--認識簡單的SQL語句資料庫SQL
- HSQL 資料庫介紹(1)--簡介SQL資料庫
- Oracle:容器資料庫簡介Oracle資料庫
- oceanbase資料庫簡介資料庫
- MySQL資料庫索引簡介MySql資料庫索引
- ORACLE資料庫簡介(轉)Oracle資料庫
- Web Sql 關聯式資料庫WebSQL資料庫
- 資料倉儲—資料庫—SQL Server 介紹資料庫SQLServer
- 國產資料庫OushuDB(Database)簡介資料庫Database
- redis(1)NoSQL資料庫簡介RedisSQL資料庫
- Sybase資料庫簡介 (轉載)資料庫
- ASP.NET Web Pages – 資料夾簡介ASP.NETWeb
- 好程式設計師大資料培訓分享之MySQL資料庫SQL簡介程式設計師大資料MySql資料庫
- H2 資料庫介紹(1)--簡介資料庫
- SQL Server埠更改後的資料庫連線方式簡要介紹SQLServer資料庫
- HTML5簡介HTML
- MySQL資料庫儲存引擎簡介MySql資料庫儲存引擎
- Oracle - 資料庫的組成簡介Oracle資料庫
- kylix 資料庫應用簡介 (轉)資料庫
- mysql 資料庫效能分析工具簡介MySql資料庫
- SQL Server:基於WEB的資料庫查詢SQLServerWeb資料庫
- 圖資料庫基礎簡介 -KDnuggets資料庫
- 第1章 Oracle資料庫簡介-DBMSOracle資料庫
- 第1章 Oracle資料庫簡介-RMOracle資料庫
- 資料庫 Mysql 邏輯架構簡介資料庫MySql架構
- 達夢資料庫全文索引簡介資料庫索引
- 【postgresl】PG資料庫sql特性簡單解析資料庫SQL
- SQL Server中基於WEB的資料庫查詢SQLServerWeb資料庫
- DB2--資料庫管理系統簡介DB2資料庫
- 崑崙資料庫 MySQL 連線協議簡介資料庫MySql協議
- 科研資料庫備案平臺簡介(RDD)資料庫
- 圖形資料庫Neo4J簡介資料庫
- Oralce記憶體資料庫TimesTen簡介記憶體資料庫