Web sql 是在浏览器模拟数据库,可以使用JS来操作SQL完成对数据的读写,但是这个东西目前支持的浏览器不多,而且其W3C规范已经停止支持,貌似其前景不是很明朗
W3C 规范:http://www.w3.org/TR/webdatabase/#dom-sqltransaction-sync-executesql (目前已经停止更新,组织也没想清楚发展方向)
支持的浏览器以及版本:
Safari (3.2+)
Chrome (3.0+)
Opera (10.5+)
通常常规的离线应用使用的是webstorage,但是webstorage带有很大的局限性,比如存储空间,domain安全机制等,而WEB SQL 就没有那么多的限制,其有更大的存储空间(可自定义设置),跨域读写,存储结构自由等特点,而且可以方便的使用SQL来进行读写,非常的方便。
其API也是比较简单,规范中都有说明,这里备份一下自己的代码:
<script> function clearTxt() { document.getElementById('result').innerHTML = ' '; } function drop() { if (window.openDatabase) { var dbs = openDatabase('mydatabase', 'v1.0', 'Save data DB', 100); if(dbs) { dbs.transaction(function(tx){ tx.executeSql("DROP TABLE AUCTION_TABLE", [], function(tx, results){ // do nothing },function(tx,error){ alert(error.message); }); }); } else { alert('open database failed.'); } } else { alert('not support web sql.'); } } function create() { if (window.openDatabase) { var dbs = openDatabase('mydatabase', 'v1.0', 'Save data DB', 100); if(dbs) { dbs.transaction(function(tx){ tx.executeSql("CREATE TABLE IF NOT EXISTS AUCTION_TABLE(ID UNIQUE, TITLE, PRICE, PIC)"); }); } else { alert('open database failed.'); } } else { alert('not support web sql.'); } } function del() { if (window.openDatabase) { var dbs = openDatabase('mydatabase', 'v1.0', 'Save data DB', 100); if(dbs) { dbs.transaction(function(tx){ tx.executeSql("DELETE FROM AUCTION_TABLE;"); }); } else { alert('open database failed.'); } } else { alert('not support web sql.'); } } function insert() { if (window.openDatabase) { var dbs = openDatabase('mydatabase', 'v1.0', 'Save data DB', 100); if(dbs) { dbs.transaction(function(tx){ tx.executeSql("INSERT INTO AUCTION_TABLE(ID, TITLE, PRICE, PIC) VALUES(?,?,?,?)",['1', 'Auction title', '598', 'http://img02.taobaocdn.com/tps/i2/T1VsaWXc8lXXXXXXXX-490-170.png']); }); } else { alert('open database failed.'); } } else { alert('not support web sql.'); } } function select() { if (window.openDatabase) { var dbs = openDatabase('mydatabase', 'v1.0', 'Save data DB', 100); if(dbs) { dbs.transaction(function(tx){ tx.executeSql("SELECT * FROM AUCTION_TABLE", [], function(tx, results) { if(results && results.rows && 0 < results.rows.length) { var text = ""; for (var i=0; i < results.rows.length; i++) { text += results.rows.item(i).ID + ' ' + results.rows.item(i).TITLE + ' ' + results.rows.item(i).PRICE + ' ' + results.rows.item(i).PIC + '<br/>'; } document.getElementById('result').innerHTML = text; } }, null); }); } else { alert('open database failed.'); } } else { alert('not support web sql.'); } } </script>