[html5]Web SQL

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>

对于websql,由于宽泛的读写规则,其带来的就是很大的安全问题,跨域读取,XSS攻击,SQL注入等都是非常头疼的事情。所以什么样的数据可以存储,如何存储,需要慎重考虑。W3C目前停止了该规范的更新,可能对目前的规范设计并不满意,而目前浏览器厂商的支持度也不高,后续的发展,还是未知。

你可能感兴趣的:(Web,浏览器,html5,function,table,database)