HTML 5 在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来进行读写,非常的方便。

演示样例代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>使用数据库实现web留言板</title>
		<script language="JavaScript">
			var datatable = null;
			//使用openDatabase方法来创建一个訪问数据库的对象
			var db = openDatabase('MyData', '', 'My Database', 102400);

			// 初始化操作
			function init() {
				datatable = document.getElementById("datatable");
				showAllData();
			}   

			// 删除全部数据
			function removeAllData() {
				for (var i =datatable.childNodes.length-1; i>=0; i--)      {
					datatable.removeChild(datatable.childNodes[i]);
				}
				var tr = document.createElement('tr');
				var th1 = document.createElement('th');
				var th2 = document.createElement('th');
				var th3 = document.createElement('th');
				th1.innerHTML = '姓名';
				th2.innerHTML = '留言';
				th3.innerHTML = '时间';
				tr.appendChild(th1);
				tr.appendChild(th2);
				tr.appendChild(th3);
				datatable.appendChild(tr);
			}   

			// 展示每行数据
			function showData(row)  {
				var tr = document.createElement('tr');
				var td1 = document.createElement('td');
				td1.innerHTML = row.NAME;
				var td2 = document.createElement('td');
				td2.innerHTML = row.MESSAGE;
				var td3 = document.createElement('td');
				var t = new Date();
				t.setTime(row.TIME);
				td3.innerHTML=t.toLocaleDateString()+" "+t.toLocaleTimeString();
				tr.appendChild(td1);
				tr.appendChild(td2);
				tr.appendChild(td3);
				datatable.appendChild(tr);
			}   

			// 展示全部数据
			function showAllData()  {
				db.transaction(function(tx)      {
					tx.executeSql('CREATE TABLE IF NOT EXISTS MsgData(name TEXT, message TEXT, time INTEGER)',[]);
					tx.executeSql('SELECT * FROM MsgData', [], function(tx, rs)          {
						removeAllData();
						for(var i = 0; i < rs.rows.length; i++)              {
							showData(rs.rows.item(i));
						}
					});
				});
			}   

			// 新增数据
			function addData(name, message, time)  {
				db.transaction(function(tx)      {
					tx.executeSql('INSERT INTO MsgData VALUES(?

, ?

, ?)',[name, message, time],function(tx, rs)          {
							//document.getElementById("msg").innerHTML = "成功保存数据!";
					},
					function(tx, error)          {
							alert(error.source + "::" + error.message);
					});
				});
			}   

			// 保存数据
			function saveData() {
				var name = document.getElementById('name').value;
				var memo = document.getElementById('memo').value;
				var time = new Date().getTime();
				addData(name,memo,time);
				showAllData();
			} 

			// 删除表中数据
			function deleteData(){
				db.transaction(function(tx){
					tx.executeSql("DELETE FROM MsgData",[],function(tx, rs)          {
							//alert("数据删除成功!");
					},
					function(tx, error)          {
							alert(error.source + "::" + error.message);
					});
				});
				showAllData();
			}
		</script>
	</head>
	<body onload="init()">
		<h1>使用数据库实现web留言板</h1>
		<table>
			<tr>
				<td><label>姓名:</label></td>
				<td><input type="text" id="name" /> </td>
			</tr>
			<tr>
				<td><label>留言:</label></td>
				<td><input type="text" id="memo" /> </td>
			</tr>
			<tr>
				<td ><input type="button" value="保存" onclick="saveData();"/> </td>
				<td ><input type="button" value="删除" onclick="deleteData();"/> </td>
			</tr>
			<tr>
				<td colspan="2">
					<p id="msg"></p>
				</td>
			</tr>
		</table>
		<hr />
		<table id="datatable" border="1">
		</table>
	</body>
</html>

对于websql。因为宽泛的读写规则,其带来的就是非常大的安全问题,跨域读取,XSS攻击,SQL注入等都是非常头疼的事情。所以什么样的数据能够存储,怎样存储。须要谨慎考虑。W3C眼下停止了该规范的更新,可能对眼下的规范设计并不惬意,而眼下浏览器厂商的支持度也不高,兴许的发展。还是未知。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

时间: 2024-11-10 01:01:52

HTML 5 在Web SQL 使用演示样本的相关文章

HTML5 Web SQL 数据库

HTML5 Web SQL 数据库 Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs. 如果你是一个 Web 后端程序员,应该很容易理解 SQL 的操作. 你也可以参考我们的 SQL 教程,了解更多数据库操作知识. Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作. 核心方法 以下是规范中定义的三个核心方法: openDatabase:这个方法使用现有的数

HTML5移动开发之路(20)——HTML5 Web SQL Database

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(20)--HTML5 Web SQL Database 一.Web Database介绍 WebSQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库.Safari.Chrome.Firefox.Opera等主流浏览器都已经支持WebSQL Database WebSQL数据库有三个核心方法: 1)打开数据库openDatabase()方法: 此方法创建数

Web SQL Database 的基本用法

这两天了解了下 Web SQL Datebase,觉得有必要mark一下,虽然目前它已暂停研发,但相信在以后会有很棒的发展.在此仅mark下它的基本用法,以备后用! Web Sql Database,中文翻译作“本地数据库”,是随着HTML5规范加入的在浏览器端运行的轻量级数据库.例如购物网站的购物车,对于简单的键值对或简单对象进行存储,但是无法应对繁琐的关系数据进行处理. Web SQL Database 规范中定义的三个核心方法:   1.openDatabase:这个方法使用现有数据库或新

阿伦学习html5 之Web SQL Database

不知道什么情况, W3C不再维护web SQL Database规范,但是大多浏览器都支持了! Web SQL Database规范页面有着这样的声明 Web SQL Database 规范中定义的三个核心方法: openDatabase:这个方法使用现有数据库或新建数据库来创建数据库对象 transaction:这个方法允许我们根据情况控制事务提交或回滚 executeSql:这个方法用于执行SQL 查询 openDatabase: 我们可以使用这样简单的一条语句,创建或打开一个本地的数据库对

HTML5 离线存储之Web SQL

HTML5 在离线存储之Web SQL 本篇没有考虑异步,多线程及SQL注入 WebDatabase 规范中说这份规范不再维护了,原因是同质化(几乎实现者都选择了Sqlite), 且不说这些,单看在HTML5中如何实现离线数据的CRUD,最基本的用法(入门级别)  1,打开数据库 2,创建表 3,新增数据 4,更新数据 5,读取数据 6,删除数据 事实上,关键点在于如何拿到一个可执行SQL语句的上下文, 像创建表,删除表,CRUD操作等仅区别于SQL语句的写法.OK,貌似"SqlHelper&q

(转)HTML 5离线存储之Web SQL

原文:http://developer.51cto.com/art/201106/267357.htm HTML 5离线存储之Web SQL 2011-06-07 15:14 kkun kkun的博客 字号:T | T WebDatabase 规范中说这份规范不再维护了,原因是同质化(几乎实现者都选择了Sqlite), 且不说这些,单看在HTML5中如何实现离线数据的CRUD,最基本的用法(入门级别) AD:51CTO学院:IT精品课程在线看! 本篇没有考虑异步,多线程及SQL注入 WebDat

Web SQL

Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作. openDatabase:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象. transaction:这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚. executeSql:这个方法用于执行实际的 SQL 查询. var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); db.transactio

Cocos2d-x 3.2 Lua演示样本 ActionTest(操作测试)

Cocos2d-x 3.2 Lua演示样本 ActionTest(操作测试) 2014年博文大赛,请投上您宝贵的一票:http://vote.blog.csdn.net/Article/Details?articleid=38272837 移动开发狂热者群: 299402133,欢迎广大开发人员增加 Cocos2d-x官方真够给力的,3.1.1还没有熟悉完,3.2就出来.本篇博客继续介绍Cocos2d-x的Lua演示样例.关于3.2的样例变动不是非常大,略微介绍一下3.2的新特性吧: 3.2版本

基于html5 localStorage , web SQL, websocket的简单聊天程序

new function() { var ws = null; var connected = false; var serverUrl; var connectionStatus; var sendMessage; var connectButton; var disconnectButton; var sendButton; var open = function() { var url = serverUrl.val(); ws = new WebSocket(url); ws.onope