PhoneGap下Web SQL实践

HTML5里的Web SQL数据库,内置了SQLite数据库,

对数据库的操作使用executeSql执行增删改查

1. 创建数据库

function creatDatabase(){
      db = openDatabase(‘Student‘, ‘1.0‘, ‘StuManage‘, 2 * 1024 * 1024);
 }

 

2. 创建表

function createTable(){

	if (db) {
        var strSQL = "create table if not exists StuInfo ";
        strSQL += " (StuID unique,Name text,Sex text,Score int)";
        db.transaction(function(tx) {
            tx.executeSql(strSQL)
        },
        function() {
            console.log("创建表错误");
        },
        function() {
            console.log("创建表成功");
        })
    }

  

3. 增加数据

function addData() {
    if (db) {

        var strSQL = "insert into StuInfo values";
        strSQL += "(?,?,?,?)";
        db.transaction(function(tx) {
            tx.executeSql(strSQL,[
			    $$("txtStuID").value,$$("txtName").value,
			    $$("selSex").value,$$("txtScore").value
			],
			function(){
				$$("txtName").value="";
	            $$("txtScore").value="";
			    alert("成功增加1条记录!");
			},
			function(tx,ex){
			     console.log(ex.message)
			})
        })

    }

}

 

4. 查询数据

function queryData(){
    if(db){
        var sql = "select * from StuInfo";
         db.transaction(function(tx) {
            tx.executeSql(sql,[],
			function(tx, results){
				var len = results.rows.length,i;
				var htmlData = "";
				for(i = 0; i < len; i++){
				    var item = results.rows.item(i);
				    var htmlitem = item.StuID + " " + item.Name + " " + item.Sex + " " + item.Score;
				    htmlData += htmlitem + "</br> ";

				}
				$$("info").innerHTML = htmlData;
			},
			function(tx,ex){
			     console.log(ex.message)
			})
        })
    }
}

  

5. 删除数据

function deleteData(){
    if (db) {

        var strSQL = "delete from StuInfo where StuID = ?";
        db.transaction(function(tx) {
            tx.executeSql(strSQL,[
			    $$("txtStuID").value
			],
			function(){
			    alert("成功删除1条记录!");
			},
			function(tx,ex){
			     console.log(ex.message)
			})
        })

    }

     queryData();
}

  

完整的Code如下

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="format-detection" content="telephone=no" />
    <meta name="msapplication-tap-highlight" content="no" />
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
    <meta http-equiv="Content-Security-Policy" content="default-src * ‘unsafe-inline‘; style-src ‘self‘ ‘unsafe-inline‘; media-src *" />
    <link rel="stylesheet" href="css/jquery.mobile-1.4.5.min.css">
    <script type="text/javascript" src="js/jquery.js"></script>
    <script  type="text/javascript" src="js/jquery.mobile-1.4.5.min.js"></script>
    <script type="text/javascript" charset="utf-8" src="cordova.js" ></script>
    <title>Hello World</title>

<script type="text/javascript" charset="utf-8">
function $$(id) {
    return document.getElementById(id);
}
        var db;
        document.addEventListener(‘deviceready‘, onDeviceReady, false);
        function onDeviceReady(){
            var db = creatDatabase();
            createTable();
            queryData();
        }

 function creatDatabase(){
      db = openDatabase(‘Student‘, ‘1.0‘, ‘StuManage‘, 2 * 1024 * 1024);
 }

 function createTable(){

	if (db) {
        var strSQL = "create table if not exists StuInfo ";
        strSQL += " (StuID unique,Name text,Sex text,Score int)";
        db.transaction(function(tx) {
            tx.executeSql(strSQL)
        },
        function() {
            console.log("创建表错误");
        },
        function() {
            console.log("创建表成功");
        })
    }
}

function addData() {
    if (db) {

        var strSQL = "insert into StuInfo values";
        strSQL += "(?,?,?,?)";
        db.transaction(function(tx) {
            tx.executeSql(strSQL,[
			    $$("txtStuID").value,$$("txtName").value,
			    $$("selSex").value,$$("txtScore").value
			],
			function(){
				$$("txtName").value="";
	            $$("txtScore").value="";
			    alert("成功增加1条记录!");
			},
			function(tx,ex){
			     console.log(ex.message)
			})
        })

    }

    queryData();
}

function queryData(){
    if(db){
        var sql = "select * from StuInfo";
         db.transaction(function(tx) {
            tx.executeSql(sql,[],
			function(tx, results){
				var len = results.rows.length,i;
				var htmlData = "";
				for(i = 0; i < len; i++){
				    var item = results.rows.item(i);
				    var htmlitem = item.StuID + " " + item.Name + " " + item.Sex + " " + item.Score;
				    htmlData += htmlitem + "</br> ";

				}
				$$("info").innerHTML = htmlData;
			},
			function(tx,ex){
			     console.log(ex.message)
			})
        })
    }
}

function deleteData(){
    if (db) {

        var strSQL = "delete from StuInfo where StuID = ?";
        db.transaction(function(tx) {
            tx.executeSql(strSQL,[
			    $$("txtStuID").value
			],
			function(){
			    alert("成功删除1条记录!");
			},
			function(tx,ex){
			     console.log(ex.message)
			})
        })

    }

     queryData();
}

    </script>
</head>

<body>
<div id="page1" data-role="page" data-add-back-btn="true">
    <div data-role="content">
        <fieldset>
            <legend>新增学生资料</legend>
            <span class="spanl">
            学号:<input type="text" id="txtStuID" size="10"><br>
            姓名:<input type="text" id="txtName"  size="15">
            </span>
            <span>
            性别:<select id="selSex">
              <option value="男">男</option>
              <option value="女">女</option>
            </select><br>
            总分:<input type="text" id="txtScore"  size="8">
            </span>
            <p class="btn">
                <input id="btnAdd" type="button" value="提交"  onClick="addData();">
            </p>

        </fieldset>
        <p id="info">显示结果</p>
        <input  type="button" value="删除记录"  onClick="deleteData();">
    </div>
</div>

</body>

</html>

  

时间: 2024-10-19 17:21:36

PhoneGap下Web SQL实践的相关文章

Web SQL Database 的基本用法

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

PhoneGap学习笔记(五) 本地数据库WEB SQL

WEB SQL允许我们在客户端创建小型数据库.它本身是一个Sqlite嵌入式数据库 一.打开或创建一个数据库 var db = window.openDatabase("testDB","1.0","testDB",100000,function(){}); 该方法打开一个数据库,如果数据库不存在则创建一个数据并返回数据库示例,接收5个参数 第一个:数据库名称 第二个:版本 第三个:数据库显示名称或描述 第四个:数据库大小 第五个:创建回调(该参

基于phonegap开发app的实践

app开发告一段落,期间遇到不少问题,写篇文章记录一下. 为虾米要用phonegap 开发app,至少要考虑android和ios两个版本吧,android偶可以应付,ios表示完全木有接触过,于是时间成本.开发成本上去了.phonegap则解决了这个问题,而且对po主而言,用web开发的方式来搞app很爽啊有木有! 当然,用之前还是要调研下,基于phonegap的app有木有成功案例.大公司里腾讯的qq邮箱ios版,豆瓣的豆瓣音乐人都是基于phonegap.重点看了看豆瓣音乐人,很无耻的反编译

《网路对抗》Exp8 WEB基础实践

20155336<网路对抗>Exp8 WEB基础实践 一.基础问题回答 1.什么是表单 表单是一个包含表单元素的区域,表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息的元素,表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签.表单域.表单按钮: 2.浏览器可以解析运行什么语言 常见的可以使用html语言.xml语言.以及php语言.javascript语言,本次实验都有所涉及,还有python语言. 3.WebServer支持哪些动态语言 j

20155223 Exp8 WEB基础实践

20155223 Exp8 WEB基础实践 基础问题回答 什么是表单? 表单是一个包含表单元素的区域. 表单元素是允许用户在表单中(比如:文本域.下拉列表.单选框.复选框等等)输入信息的元素. 表单使用表单标签定义. 浏览器可以解析运行什么语言? 超文本标记语言:HTML 可扩展标记语言:XML 还有各类脚本语言. WebServer支持哪些动态语言? 这几种语言:ASP.JSP.PHP. 实践内容 Web前端HTML 欲运行Web,首先先确认本机安装有apache2.输入命令:apache2

20155206 Exp8 WEB基础实践

20155206 Exp8 WEB基础实践 基础问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域:包含了文本框.密码框.隐藏域.多行文本框.复选框.单选框.下拉选择框和文件上传框等. 表单按钮:包括提交按钮.复位按钮和一般按钮:用于将数据传送到服务器上的CGI脚本或者取消输入,还可以用表单按钮来控制其他定义了处理脚本的处理工作. (2)浏览器可以解析运行什么语

《响应式Web设计实践》学习笔记

原书: 响应式Web设计实践 第2章 流动布局 1. 布局选项 传统的固定布局中存在很多问题, 随着屏幕大小的越来越多元化, 固定布局已经不能适用了. 在流动布局中, 度量的单位不再是像素, 而是变成了百分比. 弹性布局与流动布局类似, 但是通常情况下, 弹性布局中会以em来作为单位. 带来一个好处是随着用户增大或减小字体, 适用弹性布局的元素的宽度也会等比例地变化. 但是其也可能出现水平滚动条 混合布局 媒体查询: 媒体查询允许根据设备的信息----诸如屏幕宽度, 方向或者分辨率等属性来使用不

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