`

PhoneGap API帮助文档翻译—Storage(存储)

阅读更多

文章源自:http://blog.csdn.net/phonegapcn/article/details/6702943

提供对设备的存储选项的访问。

此 API基于W3C WEB SQL Database Specification和W3C Web Storage API Specification。有些设备已经提供了对该规范的实现,对于这些设备采用内置实现而非使用PhoneGap的实现。对于没有存储支持的设 备,PhoneGap的实现应该是完全兼容W3C规范。

方法:

  • openDatabase

参数

  • name
  • version
  • display_name
  • size

对象:

  • Database
  • SQLTransaction
  • SQLResultSet
  • SQLResultSetList
  • SQLError
  • localStorage

openDatabase

返回一个新的Database对象。

 

var dbShell = window.openDatabase(name, version, display_name, size);

 说明:window.openDatabase返回一个新的Database对象。

 

该方法将创建一个新的SQL Lite数据库,并返回该Database对象。可使用该Database对象操作数据。

支持的平台:

  • Android
  • BlackBerry WebWorks (OS 6.0或更高版本)
  • iPhone

简单的范例:

 

var db = window.openDatabase("test", "1.0", "Test DB", 1000000);

 完整的范例:

 

 

<!DOCTYPE html>
<html>
<head>	
<title>Contact Example</title>

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">

// 等待加载PhoneGap
document.addEventListener("deviceready", onDeviceReady, false); 

// PhoneGap加载完毕
function onDeviceReady() {
	var db = window.openDatabase("test", "1.0", "Test DB", 1000000);
}

</script>
</head>
<body>
	<h1>Example</h1>
	<p>Open Database</p>
</body>
</html>

name:数据库的名称。

 

version:数据库的版本号。

display_name:数据库的显示名。

size:以字节为单位的数据库大小。

Database:包含允许用户操作数据库的方法。

方法:

  • transaction:运行一个数据库事务。
  • changeVersion:该方法允许脚本执行以下原子操作:校验数据库的版本号并更新版本号以完成架构更新。

详述:

调用window.openDatabase()将返回一个Database对象。

支持的平台:

  • Android
  • BlackBerry WebWorks (OS 6.0或更高版本)
  • iPhone

Transaction 的简单范例:

 

function populateDB(tx) {
	tx.executeSql('DROP TABLE DEMO IF EXISTS');
	tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
	tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
	tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

function errorCB(err) {
   	alert("Error processing SQL: "+err.code);
}

function successCB() {
   	alert("success!");
}

var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(populateDB, errorCB, successCB);

 Change Version的简单范例:

 

 

var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.changeVersion("1.0", "1.1");

 完整的范例:

 

 

<!DOCTYPE html>
<html>
<head>	
<title>Contact Example</title>

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">

	// 等待加载PhoneGap
	document.addEventListener("deviceready", onDeviceReady, false); 
	
	// PhoneGap加载完毕
	function onDeviceReady() {
		var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
		db.transaction(populateDB, errorCB, successCB);
	}
	
	// 填充数据库
	function populateDB(tx) {
		tx.executeSql('DROP TABLE DEMO IF EXISTS');
		tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
		tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
		tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
	}
	
	// 事务执行出错后调用的回调函数
	function errorCB(tx, err) {
		alert("Error processing SQL: "+err);
	}
	
	// 事务执行成功后调用的回调函数
	function successCB() {
		alert("success!");
	}

</script>
</head>
<body>
	<h1>Example</h1>
	<p>Database</p>
</body>
</html>

 Android 1.X 的特异情况:

 

  • changeVersion:Android 1.X设备不支持此方法。

SQLTransaction

包含允许用户对Database对象执行SQL语句的方法。

方法:

  • executeSql:执行一条SQL语句。

详述:当你调用Database对象的transaction方法后,其回调函数将被调用并接收一个SQLTransaction对象。用户可以通过多次调用executeSql来建立一个数据库事务处理。

支持的平台:

  • Android
  • BlackBerry WebWorks (OS 6.0或更高版本)
  • iPhone

Execute SQL的简单范例:

 

function populateDB(tx) {
	tx.executeSql('DROP TABLE DEMO IF EXISTS');
	tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
	tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
	tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

function errorCB(err) {
   	alert("Error processing SQL: "+err);
}

function successCB() {
   	alert("success!");
}

var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(populateDB, errorCB, successCB);

 完整的范例:

 

 

<!DOCTYPE html>
<html>
<head>	
<title>Contact Example</title>

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">

// 等待加载PhoneGap
document.addEventListener("deviceready", onDeviceReady, false);

// PhoneGap加载完毕
function onDeviceReady() {
   	var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
   	db.transaction(populateDB, errorCB, successCB);
}

// 填充数据库
function populateDB(tx) {
	tx.executeSql('DROP TABLE DEMO IF EXISTS');
	tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
	tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
	tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

// 事务执行出错后调用的回调函数
function errorCB(err) {
   	alert("Error processing SQL: "+err);
}

// 事务执行成功后调用的回调函数
function successCB() {
   	alert("success!");
}

</script>
</head>
<body>
	<h1>Example</h1>
	<p>SQLTransaction</p>
</body>
</html>

 SQLResultSet

 

当SQLTransaction对象的executeSql方法被调用,将会触发executeSql中设定的回调函数并返回一个SQLResultSet对象。

属性:

  • insertId:SQLResultSet对象通过SQL语句插入到数据库的行记录的行ID。[译注:如果插入多行的时候,返回最后一个行的ID]
  • rowAffected:被SQL语句改变的记录行数,如果语句没有影响任何行则设置为0。
  • rows:是一个SQLResultSetRowList对象,表示返回的多条记录。如果没有返回任何记录,则此对象为空。

详述:

当 你调用SQLTransaction对象的executeSql方法,将会触发executeSql中设定的回调函数并返回一个SQLResultSet 对象。该结果对象包含三个属性:第一个是insertID返回成功的SQL插入语句所插入行的ID,如果SQL语句不是插入语句则insertID将不被 设定;第二个是rowAffected,在SQL查询操作时此属性总是0,当插入或更新操作时此属性返回受到影响的行数;最后一个属性是 SQLResultSetList类型,返回SQL查询语句的返回数据。

支持的平台:

  • Android
  • BlackBerry WebWorks (OS 6.0或更高版本)
  • iPhone

Execute SQL的简单范例:

 

function queryDB(tx) {
	tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}

function querySuccess(tx, results) {
	// 因为没有插入记录,所以返回值为空
	console.log("Insert ID = " + results.insertId);
	// 因为这是一条查询语句所以返回值为0
	console.log("Rows Affected = " + results.rowAffected);
	// 返回查询到的记录行数量
	console.log("Insert ID = " + results.rows.length);
}

function errorCB(err) {
	alert("Error processing SQL: "+err.code);
}

var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(queryDB, errorCB);

 完整的范例:

 

 

<!DOCTYPE html>
<html>
<head>	
<title>Contact Example</title>

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">

	// 等待加载PhoneGap
	document.addEventListener("deviceready", onDeviceReady, false);
	
	// 填充数据库
	function populateDB(tx) {
		tx.executeSql('DROP TABLE DEMO IF EXISTS');
		tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
		tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
		tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
	}
	
	// 查询数据库
	function queryDB(tx) {
		tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
	}
	
	// 查询成功后调用的回调函数
	function querySuccess(tx, results) {
		// 因为没有插入记录,所以返回值为空
		console.log("Insert ID = " + results.insertId);
		// 因为这是一条查询语句所以返回值为0
		console.log("Rows Affected = " + results.rowAffected);
		// 返回查询到的记录行数量
		console.log("Insert ID = " + results.rows.length);
	}
	
	// 事务执行出错后调用的回调函数
	function errorCB(err) {
		console.log("Error processing SQL: "+err.code);
	}
	
	// 事务执行成功后调用的回调函数
	function successCB() {
		var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
		db.transaction(queryDB, errorCB);
	}
	
	// PhoneGap加载完毕
	function onDeviceReady() {
		var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
		db.transaction(populateDB, errorCB, successCB);
	}

</script>
</head>
<body>
	<h1>Example</h1>
	<p>Database</p>
</body>
</html>

 SQLResultSetList

 

SQLResultSet对象的一个属性,包含SQL查询所返回的所有行数据。

属性:length: SQL查询所返回的记录行数。

方法:item:根据指定索引返回一个行记录的JavaScript对象。

详述:

SQlResultSetList 包含一个SQL查询语句所返回的数据。该对象包含一个长度属性告知用户有多少符合查询条件的行记录数被返回。通过传递指定的索引给该对象的item方法获 取指定的行记录数据,此item方法返回一个JavaScript对象,其属性包含前述查询语句所针对的数据库的所有列。

支持的平台:

  • Android
  • BlackBerry WebWorks (OS BlackBerry WebWorks (OS 6.0或更高版本)
  • iPhone

Execute SQL的简单范例:

 

function queryDB(tx) {
   	tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}

function querySuccess(tx, results) {
   	var len = results.rows.length;
   	console.log("DEMO table: " + len + " rows found.");
   	for (var i=0; i<len; i++){
	   	console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);
   	}
}

function errorCB(err) {
   	alert("Error processing SQL: "+err.code);
}

var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(queryDB, errorCB);

 完整的范例:

 

 

<!DOCTYPE html>
<html>
<head>	
<title>Contact Example</title>

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">

	// 等待加载PhoneGap
	document.addEventListener("deviceready", onDeviceReady, false); 
	
	// 填充数据库
	function populateDB(tx) {
		tx.executeSql('DROP TABLE DEMO IF EXISTS');
		tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
		tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
		tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
	}
	
	// 查询数据库
	function queryDB(tx) {
		tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
	}
	
	// 查询成功后调用的回调函数
	function querySuccess(tx, results) {
		var len = results.rows.length;
		console.log("DEMO table: " + len + " rows found.");
		for (var i=0; i<len; i++){
			console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);
		}
	}
	
	// 事务执行出错后调用的回调函数
	function errorCB(err) {
		console.log("Error processing SQL: "+err.code);
	}
	
	// 事务执行成功后调用的回调函数
	function successCB() {
		var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
		db.transaction(queryDB, errorCB);
	}
	
	// PhoneGap加载完毕
	function onDeviceReady() {
		var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
		db.transaction(populateDB, errorCB, successCB);
	}

</script>
</head>
<body>
	<h1>Example</h1>
	<p>Database</p>
</body>
</html>

 SQLError

 

出现错误时,将抛出一个SQLError对象。

属性:

  • code: 一个在下面常量列表中定义好的错误代码c。
  • message:关于此错误的说明。

常量:

  • SQLError.UNKNOWN_ERR:未知错误
  • SQLError.DATABASE_ERR:数据库错误
  • SQLError.VERSION_ERR:版本错误
  • SQLError.TOO_LARGE_ERR:数据集过大错误
  • SQLError.QUOTA_ERR:超过数据库配额错误
  • SQLError.SYNTAX_ERR:语法错误
  • SQLError.CONSTRAINT_ERR:约束错误
  • SQLError.TIMEOUT_ERR:超时错误

说明:操作数据库出现错误时,将抛出一个SQLError对象。

localStorage

提供对W3C Storage接口(http://dev.w3.org/html5/webstorage/#the-localstorage-attribute)的访问。

 

var storage = window.localStorage;

 方法:

 

  • key:返回指定位置的键的名称。
  • getItem: 返回指定键所对应的记录。
  • setItem:存储一个键值对。
  • removeItem:删除指定键对应的记录。
  • clear:删除所有的键值对。

详述:localStorage提供对W3C Storage接口的访问,可以使用键值对的方式存储数据。

支持的平台:

  • Android
  • BlackBerry WebWorks(OS 6.0或更高版本)
  • iPhone

Key 的简单范例:

var keyName = window.localStorage.key(0); 

 Set Item的简单范例:

window.localStorage.setItem("key", "value"); 

 Get Item的简单范例:

    var value = window.localStorage.getItem("key");  
    // value的值现在是"value"  

 Remove Item的简单范例:

window.localStorage.removeItem("key");

 Clear的简单范例:

window.localStorage.clear();

 完整的范例:

<!DOCTYPE html>
<html>
<head>	
<title>Contact Example</title>

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">

// 等待加载PhoneGap
document.addEventListener("deviceready", onDeviceReady, false); 

// PhoneGap加载完毕
function onDeviceReady() {
   	window.localStorage.setItem("key", "value");
   	var keyname = window.localStorage.key(i);
   	[译注:应当是var keyname = window.localStorage.key(0);]
   	// keyname的值现在是“key”
   	var value = window.localStorage.getItem("key");
   	// value的值现在是“value”
   	window.localStorage.removeItem("key");
   	window.localStorage.setItem("key2", "value2");
   	window.localStorage.clear();
   	// localStorage现在是空的
}

</script>
</head>
<body>
	<h1>Example</h1>
	<p>localStorage</p>
</body>
</html>

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    PhoneGap,API帮助文档.zip

    这个"PhoneGap API帮助文档.zip"压缩包显然包含了关于如何使用PhoneGap API的详细指南,对于开发者来说是非常宝贵的资源。下面我们将深入探讨PhoneGap API中的关键组件及其功能。 1. **加速度计(Accelerometer)**...

    PhoneGap中文API帮助文档

    网上的phonegap中文帮助文档尚少,翻译也不太好,在此收集了一些翻译优秀的文章,并制作成chm的帮助文档,以帮助各位学习,此文档包含了phonegap的主要使用功能,并提供了完整示例

    PhoneGap,API帮助文档翻译整理4-Compass(指南针)

    标题:PhoneGap,API帮助文档翻译整理4-Compass(指南针) 描述:本文档将深入探讨PhoneGap中Compass API的功能与应用,包括如何获取设备的指南针方向、监听指南针变化以及如何处理相关事件。 ### 一、Compass API...

    PhoneGap,API帮助文档翻译整理6-Contacts(通讯录)

    ### PhoneGap Contacts API详解 #### 一、简介 在移动应用开发中,有时我们需要访问用户的通讯录以便于实现社交功能或其他交互式应用需求。PhoneGap(现称Cordova)为开发者提供了一套丰富的API,使得跨平台应用...

    PhoneGap,API帮助文档翻译整理7-Events_(消息)

    PhoneGap API 提供了一系列的事件,这些事件可以帮助开发者响应移动设备上的特定操作,从而实现更丰富的用户体验。本文将详细介绍 PhoneGap 中的事件类型及其使用方法。 1. **backbutton**:当用户在 Android 设备...

    PhoneGap,API帮助文档翻译整理10-Media_(媒体)

    在本篇文档中,我们关注的是 PhoneGap 的 Media API,它提供了对移动设备媒体(如音频)的访问和控制能力。 Media API 提供了对音频文件的操作,包括播放、暂停、停止以及获取当前播放位置等功能。以下是对 Media ...

    PhoneGap,API帮助文档翻译整理5-Device(设备)

    知识点:PhoneGap设备API及其应用 一、PhoneGap设备API概览 PhoneGap是一个开源框架,允许开发者使用HTML、CSS和JavaScript开发跨平台移动应用程序。设备API是PhoneGap提供的核心功能之一,它允许开发者访问设备的...

    Phonegap API (中文版)

    最新的Phonegap api 中文翻译版。让你快速入门。

    PhoneGap,API帮助文档翻译整理2-Camera(相机)

    知识点:PhoneGap的Camera API详解 一、PhoneGap与Camera API简介 PhoneGap是一个开源框架,允许开发者使用HTML,CSS和JavaScript开发跨平台移动应用程序。它通过提供一系列API来访问设备的功能,如摄像头、GPS、...

    PhoneGap,API帮助文档翻译整理6-Contacts(通讯录).pdf

    在本文中,我们将围绕PhoneGap框架的API文档进行探讨,特别是在处理移动设备上的通讯录(Contacts)数据时所使用的一系列方法。根据提供的文件信息,我们将会详细解释如何使用PhoneGap API来创建和查找通讯录中的...

    PhoneGap,API帮助文档翻译整理8-File_(文件)

    在本篇文档中,我们将重点关注与“文件”相关的 API,包括 `File`、`DirectoryEntry`、`FileReader` 等。 **File API** 是一组用于读取、写入和管理设备文件系统层级结构的接口。这些接口遵循 W3C 的《文件系统 API...

    PhoneGap,API帮助文档翻译整理3-Capture(捕捉)

    ### PhoneGap Capture API详解 #### 一、简介 **PhoneGap**是一款开源框架,允许开发者使用HTML、CSS和JavaScript等Web技术开发跨平台移动应用程序。本文档主要介绍**PhoneGap**中的**Capture API**,该API提供了...

    PhoneGap,API帮助文档翻译整理9-Geolocation_(定位)

    // PhoneGap 激活时执行 function onDeviceReady() { // 不使用超时,因为不是必需的 // 如果在设备准备好之前调用了 getCurrentPosition,将会失败 navigator.geolocation.getCurrentPosition(onSuccess, on...

    PhoneGap的API组件及使用方法

    7. **存储** (Storage): 包括WebSQL数据库和IndexedDB,用于本地数据持久化。 8. **摄像头** (Camera): 通过调用`navigator.camera`,用户可以访问设备的摄像头,拍照或选择现有图片。 9. **联系人** (Contacts): ...

    PhoneGap,API帮助文档翻译整理1-Accelerometer(加速度计)

    ### PhoneGap中的Accelerometer(加速度计)API详解 #### 一、简介 加速度计是一种常见的硬件传感器,被广泛应用于智能手机和平板电脑等移动设备上。它主要用于测量设备在三维空间中的线性加速度,通常包括三个轴...

    phonegap api中文手册

    本手册为PhoneGap API的中文版指南,旨在为开发者提供全面、详细的API使用指导,帮助其利用PhoneGap框架开发跨平台移动应用。PhoneGap是一款基于HTML、CSS和JavaScript的技术栈,允许开发者构建适用于多个移动操作...

    PhoneGap API之事件处理.

    在PhoneGap中,事件处理是连接用户交互与应用程序逻辑的关键环节,让我们深入探讨PhoneGap API中的事件处理机制。 1. **事件模型**:PhoneGap遵循W3C的DOM事件模型,包括事件监听器、事件冒泡和事件捕获。事件监听...

    Phonegap API中文版

    总的来说,PhoneGap API中文版对于想要使用Web技术开发跨平台移动应用的开发者来说,是一个重要的学习和参考资源,可以帮助他们更高效地理解和利用PhoneGap的功能。通过深入学习和实践,开发者可以创建出功能丰富的...

    Phonegap_API_中文版

    CHM文件是一种常见的Windows帮助文档格式,其中包含了丰富的信息和教程,方便用户查阅。 在PhoneGap中,以下是一些关键的知识点: 1. **环境配置**:首先,你需要安装PhoneGap CLI(命令行界面)和相关的平台SDK...

Global site tag (gtag.js) - Google Analytics