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

WEB SQL允许我们在客户端创建小型数据库。它本身是一个Sqlite嵌入式数据库

一、打开或创建一个数据库

var db = window.openDatabase("testDB","1.0","testDB",100000,function(){});

该方法打开一个数据库,如果数据库不存在则创建一个数据并返回数据库示例,接收5个参数

第一个:数据库名称

第二个:版本

第三个:数据库显示名称或描述

第四个:数据库大小

第五个:创建回调(该参数非必须)

二、事务

db.transaction(function(tx){},function(error){},function(){});

开始事务包含三个参数,其中第一个参数为必须参数,第二、三个参数为非必须。

第一个参数:必须,执行事务的方法,自动传入事务对象

第二个参数:事务执行失败的回调

第三个参数:事务执行成功的回调

通过事务的executeSql(sql,args,function(tx,resultSet){},function(tx,error){})执行SQL语句,该方法包含四个参数,其中第一个参数为必须,后面三个位非必须

第一个参数:需要执行的sql语句

第二个参数:sql语句中的占位符?的执行参数(如果sql语句中包含了“?”占位符,则该参数为必须参数,多个参数使用数组一一对应)

第三个参数:执行成功回调,该回调传回两个参数,第一个为事务对象,第二个为结果集(如果有返回结果集的查询,参数必须)

第四个参数:执行错误回调

三、关于executeSql中的成功回调函数

executeSql执行成功后的回调函数会传入两个参数tx和resultSet,其中tx是事务对象,resultSet则包含三个属性,分别是insertId,rowsAffected,rows,执行不同SQL语句,这三个属性值也不相同。

insertId:这是执行INSERT语句时插入行的ID。其余情况尝试读取该属性会有异常抛出:

Uncaught InvalidAccessError: Failed to read the ‘insertId‘ property from ‘SQLResultSet‘: The query didn‘t result in any rows being added.

rowsAffected:被SQL语句影响的行的个数,如果没有任何改变返回0

rows:查询是返回的结果集,该属性为一个对象,包含两个属性,length和item,遍历如下(假设结果集中包含一列名叫name)

for(var i=0,len=rows.length;i<len;i++){

var name=rows.item(i).name

}

四,关于id自增长、主键和数据类型

设置一列为主键并自增长:“id INTEGER PRIMARY KEY AUTOINCREMENT”

如:CREATE TABLE IF NOT EXISTS tUser(id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR)

SQLite字段无数据类型,定义列时可忽略数据类型,无论定义成INTEGER、VARCHAR还是TEXT,它们的保存方式都是字符串,但有个特殊情况,即设置某一列为自增长时,必须

指定该列数据类型为INTEGER,其它情况依然建议写上合适的数据类型,虽然无效但是便于同其它程序员交流。

完整示例:

1 <div id="msg"></div>
 1 var msg=document.getElementById("msg");
 2 init();
 3 function init(){
 4   var db = window.openDatabase("testDB","1.0","testDB",100000);//打开数据库
 5   initDB(db);
 6   insertData(db);
 7   updateData(db);
 8   findDate(db);
 9
10 }
11 //创建数据表
12 function initDB(db){
13     db.transaction(function(tx){
14         var sql="CREATE TABLE IF NOT EXISTS tUser(id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR)";
15         tx.executeSql(sql,[],function(){},function(tx,err){console.log(tx);console.log(err);});
16     });
17 }
18 //插入数据
19 function insertData(db){
20     db.transaction(function(tx){
21         tx.executeSql("INSERT INTO tUser(name) VALUES(?);",[‘小米‘],function(){},function(tx,err){console.log(err);});
22         tx.executeSql("INSERT INTO tUser(name) VALUES(?);",[‘小明‘],function(tx,resultSet){console.log(resultSet);});
23     },function(errormsg){
24         console.log(errormsg);
25     });
26 }
27 //修改数据
28 function updateData(db){
29     db.transaction(function(tx){
30         tx.executeSql("UPDATE tUser SET name=? WHERE id=?",[‘小明2‘,2]);
31     });
32 }
33 //查询数据
34 function findDate(db){
35    db.transaction(function(tx){           var sql="SELECT * FROM tUser";           //var sql="SELECT * FROM tUser LIMIT 0,3"//同mysql一致的limit查询,limit第二个参数传入-1表示查询到记录末尾
36         tx.executeSql(sql,[],function(tx,resultSet){
37             var rows = resultSet.rows;
38             var str="";
39             for(var i=0,len=rows.length;i<len;i++){
40                   str=str+rows.item(i).id+":"+rows.item(i).name+"<br/>"
41             }
42             msg.innerHTML=str;
43         });
44    });
45 }

结果:

本文地址:http://www.cnblogs.com/wangjiajun/p/4054323.html

时间: 2024-10-30 20:18:03

PhoneGap学习笔记(五) 本地数据库WEB SQL的相关文章

html 5 本地数据库-- Web Sql Database核心方法openDatabase、transaction、executeSql 详解

Web SQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库.Safari.Chrome.Firefox.Opera等主流浏览器都已经支持Web SQL Database.HTML5的Web SQL Databases的确很诱惑人,当你发现可以用与mysql查询一样的查询语句来操作本地数据库时,你会发现这东西挺有趣的.今天,我们一起来了解HTML 5的Web SQL Database API. 下面将一一将介绍怎样创建打开数据库,创建表,添加

PhoneGap学习笔记(四) 本地图片和摄像头

PhoneGap关于图像的对象是Camera,该对象只有一个方法getPicture();该方法参数如下: quality:0-100的整数,设置图片质量,如果以地址的形式加载本地图片,该参数无效. destinationType:Camera.DestinationType.FILE_URL | Camera.DestinationType.DATA_URL 如果是FILE_URL,图像以本地地址的形式返回,如果是DATA_URL,图像以base64的形式返回,img的src属性需拼接base

Sharepoint2013商务智能学习笔记之Excel Service展示Sql Server数据Demo(五)

第一步,打开Excel新建空白工作簿 第二步,使用Excel连接sql 数据库 第三步,画图 第四步 添加筛选器 最后效果如下: 第五步,将Excel上传到sharepoint任意文档库,并直接点击 可以使用Excel web access承载Excel表格,这样可以使用Sharepoint 自带的filter webpart和Excel Web Access结合使用,无代码的对Excel做更精细化的控制. Sharepoint2013商务智能学习笔记之Excel Service展示Sql Se

WEB前端学习笔记 五

接web前端学习笔记第四篇,此篇为web学习笔记 五,在此感谢您的采集和转发,但请注明文章出自网知博学. 2.0.3  html标签的属性格式 现在我们知道了两个双标签分别是,标题标签:<h1> - <h6>.和段落标签:<p></p>还知道了一个换行的单标签:<br />,现在我们给<p></p>标签添加一个属性,来改变段落是右对齐,还是左对齐,还是居中. 如上图,<p>标签中的 align(中文就是排列的意

laravel3学习笔记(五)

原作者博客:ieqi.net ==================================================================================================== 模型 在MVC模式的Web框架中,模型Model作为数据的抽象而存在,在Model层中,我们放置直接对数据的各种处理和操作,然后将抽象过的数据操作暴露为Model类给控制器,这样,在控制器中我们就不必拘泥于处理具体数据现实的各种细节中了,比如数据库如何连接,数据的类型

python基础教程_学习笔记22:数据库支持

数据库支持 python数据库API 支持sql标准的可用数据库有很多,其中多数在python中都有对应的客户端模块. 全局变量 python DB API的模块特性 变量名 用途 apilevel 所使用的python db api版本 threadsafety 模块的线程安全等级 paramstyle 在sql查询中使用的参数风格 异常 异常 超类 描述 StandardError 所有异常的泛型基类 Warning StandardError 在非致命错误发生时引发 Error Stand

Android学习笔记五之Service

Android学习笔记五之Service 1.什么是Service? 什么是Service?Service是Android系统的四大组件之一,官方文档是这样描述Service的: A Service is an application component that can perform long-running operations in the background and does not provide a user interface. Another application comp

Caliburn.Micro学习笔记(五)----协同IResult

Caliburn.Micro学习笔记(五)----协同IResult 今天说一下协同IResult 看一下IResult接口 /// <summary> /// Allows custom code to execute after the return of a action. /// </summary> public interface IResult { /// <summary> /// Executes the result using the specif

angular学习笔记(五)-阶乘计算实例(1)

<!DOCTYPE html> <html ng-app> <head> <title>2.3.2计算阶乘实例1</title> <meta charset="utf-8"> <script src="../angular.js"></script> <script src="script.js"></script> </