立即注册 登录
PhoneGap中文网 返回首页

niexiangli的个人空间 http://www.phonegap100.com/?6884 [收藏] [复制] [RSS]

日志

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

已有 1149 次阅读2014-4-14 15:52 |个人分类:分享日志


 提供对设备的存储选项的访问。
此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对象。
  1. var dbShell = window.openDatabase(name, version, display_name, size);  
说明:
window.openDatabase返回一个新的Database对象。
该方法将创建一个新的SQL Lite数据库,并返回该Database对象。可使用该Database对象操作数据。
支持的平台:
  • Android
  • BlackBerry WebWorks (OS 6.0或更高版本)
  • iPhone
简单的范例:
  1. var db = window.openDatabase("test", "1.0", "Test DB", 1000000);  
完整的范例:
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>      
  4. <title>Contact Example</title>  
  5.   
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7. <script type="text/javascript" charset="utf-8">  
  8.   
  9. // 等待加载PhoneGap  
  10. document.addEventListener("deviceready", onDeviceReady, false);   
  11.   
  12. // PhoneGap加载完毕  
  13. function onDeviceReady() {  
  14.     var db = window.openDatabase("test", "1.0", "Test DB", 1000000);  
  15. }  
  16.   
  17. </script>  
  18. </head>  
  19. <body>  
  20.     <h1>Example</h1>  
  21.     <p>Open Database</p>  
  22. </body>  
  23. </html>  
name 
 
数据库的名称。
version 
 
数据库的版本号。
display_name 
 
数据库的显示名。
size 
 
以字节为单位的数据库大小。
Database 
 
包含允许用户操作数据库的方法。
方法:
  • transaction:运行一个数据库事务。
  • changeVersion:该方法允许脚本执行以下原子操作:校验数据库的版本号并更新版本号以完成架构更新。
详述:
调用window.openDatabase()将返回一个Database对象。
支持的平台:
  • Android
  • BlackBerry WebWorks (OS 6.0或更高版本)
  • iPhone
Transaction 的简单范例:
  1. function populateDB(tx) {  
  2.     tx.executeSql('DROP TABLE DEMO IF EXISTS');  
  3.     tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');  
  4.     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');  
  5.     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');  
  6. }  
  7.   
  8. function errorCB(err) {  
  9.     alert("Error processing SQL: "+err.code);  
  10. }  
  11.   
  12. function successCB() {  
  13.     alert("success!");  
  14. }  
  15.   
  16. var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  17. db.transaction(populateDB, errorCB, successCB);  
Change Version的简单范例:
  1. var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  2. db.changeVersion("1.0", "1.1");  
完整的范例:
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>      
  4. <title>Contact Example</title>  
  5.   
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7. <script type="text/javascript" charset="utf-8">  
  8.   
  9.     // 等待加载PhoneGap  
  10.     document.addEventListener("deviceready", onDeviceReady, false);   
  11.       
  12.     // PhoneGap加载完毕  
  13.     function onDeviceReady() {  
  14.         var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  15.         db.transaction(populateDB, errorCB, successCB);  
  16.     }  
  17.       
  18.     // 填充数据库  
  19.     function populateDB(tx) {  
  20.         tx.executeSql('DROP TABLE DEMO IF EXISTS');  
  21.         tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');  
  22.         tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');  
  23.         tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');  
  24.     }  
  25.       
  26.     // 事务执行出错后调用的回调函数  
  27.     function errorCB(tx, err) {  
  28.         alert("Error processing SQL: "+err);  
  29.     }  
  30.       
  31.     // 事务执行成功后调用的回调函数  
  32.     function successCB() {  
  33.         alert("success!");  
  34.     }  
  35.   
  36. </script>  
  37. </head>  
  38. <body>  
  39.     <h1>Example</h1>  
  40.     <p>Database</p>  
  41. </body>  
  42. </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的简单范例:
  1. function populateDB(tx) {  
  2.     tx.executeSql('DROP TABLE DEMO IF EXISTS');  
  3.     tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');  
  4.     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');  
  5.     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');  
  6. }  
  7.   
  8. function errorCB(err) {  
  9.     alert("Error processing SQL: "+err);  
  10. }  
  11.   
  12. function successCB() {  
  13.     alert("success!");  
  14. }  
  15.   
  16. var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  17. db.transaction(populateDB, errorCB, successCB);  
完整的范例:
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>      
  4. <title>Contact Example</title>  
  5.   
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7. <script type="text/javascript" charset="utf-8">  
  8.   
  9. // 等待加载PhoneGap  
  10. document.addEventListener("deviceready", onDeviceReady, false);  
  11.   
  12. // PhoneGap加载完毕  
  13. function onDeviceReady() {  
  14.     var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  15.     db.transaction(populateDB, errorCB, successCB);  
  16. }  
  17.   
  18. // 填充数据库  
  19. function populateDB(tx) {  
  20.     tx.executeSql('DROP TABLE DEMO IF EXISTS');  
  21.     tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');  
  22.     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');  
  23.     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');  
  24. }  
  25.   
  26. // 事务执行出错后调用的回调函数  
  27. function errorCB(err) {  
  28.     alert("Error processing SQL: "+err);  
  29. }  
  30.   
  31. // 事务执行成功后调用的回调函数  
  32. function successCB() {  
  33.     alert("success!");  
  34. }  
  35.   
  36. </script>  
  37. </head>  
  38. <body>  
  39.     <h1>Example</h1>  
  40.     <p>SQLTransaction</p>  
  41. </body>  
  42. </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的简单范例:
  1. function queryDB(tx) {  
  2.     tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);  
  3. }  
  4.   
  5. function querySuccess(tx, results) {  
  6.     // 因为没有插入记录,所以返回值为空  
  7.     console.log("Insert ID = " + results.insertId);  
  8.     // 因为这是一条查询语句所以返回值为0  
  9.     console.log("Rows Affected = " + results.rowAffected);  
  10.     // 返回查询到的记录行数量  
  11.     console.log("Insert ID = " + results.rows.length);  
  12. }  
  13.   
  14. function errorCB(err) {  
  15.     alert("Error processing SQL: "+err.code);  
  16. }  
  17.   
  18. var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  19. db.transaction(queryDB, errorCB);  
完整的范例:
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>      
  4. <title>Contact Example</title>  
  5.   
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7. <script type="text/javascript" charset="utf-8">  
  8.   
  9.     // 等待加载PhoneGap  
  10.     document.addEventListener("deviceready", onDeviceReady, false);  
  11.       
  12.     // 填充数据库  
  13.     function populateDB(tx) {  
  14.         tx.executeSql('DROP TABLE DEMO IF EXISTS');  
  15.         tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');  
  16.         tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');  
  17.         tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');  
  18.     }  
  19.       
  20.     // 查询数据库  
  21.     function queryDB(tx) {  
  22.         tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);  
  23.     }  
  24.       
  25.     // 查询成功后调用的回调函数  
  26.     function querySuccess(tx, results) {  
  27.         // 因为没有插入记录,所以返回值为空  
  28.         console.log("Insert ID = " + results.insertId);  
  29.         // 因为这是一条查询语句所以返回值为0  
  30.         console.log("Rows Affected = " + results.rowAffected);  
  31.         // 返回查询到的记录行数量  
  32.         console.log("Insert ID = " + results.rows.length);  
  33.     }  
  34.       
  35.     // 事务执行出错后调用的回调函数  
  36.     function errorCB(err) {  
  37.         console.log("Error processing SQL: "+err.code);  
  38.     }  
  39.       
  40.     // 事务执行成功后调用的回调函数  
  41.     function successCB() {  
  42.         var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  43.         db.transaction(queryDB, errorCB);  
  44.     }  
  45.       
  46.     // PhoneGap加载完毕  
  47.     function onDeviceReady() {  
  48.         var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  49.         db.transaction(populateDB, errorCB, successCB);  
  50.     }  
  51.   
  52. </script>  
  53. </head>  
  54. <body>  
  55.     <h1>Example</h1>  
  56.     <p>Database</p>  
  57. </body>  
  58. </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的简单范例:
  1. function queryDB(tx) {  
  2.     tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);  
  3. }  
  4.   
  5. function querySuccess(tx, results) {  
  6.     var len = results.rows.length;  
  7.     console.log("DEMO table: " + len + " rows found.");  
  8.     for (var i=0; i<len; i++){  
  9.         console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);  
  10.     }  
  11. }  
  12.   
  13. function errorCB(err) {  
  14.     alert("Error processing SQL: "+err.code);  
  15. }  
  16.   
  17. var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  18. db.transaction(queryDB, errorCB);  
完整的范例:
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>      
  4. <title>Contact Example</title>  
  5.   
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7. <script type="text/javascript" charset="utf-8">  
  8.   
  9.     // 等待加载PhoneGap  
  10.     document.addEventListener("deviceready", onDeviceReady, false);   
  11.       
  12.     // 填充数据库  
  13.     function populateDB(tx) {  
  14.         tx.executeSql('DROP TABLE DEMO IF EXISTS');  
  15.         tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');  
  16.         tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');  
  17.         tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');  
  18.     }  
  19.       
  20.     // 查询数据库  
  21.     function queryDB(tx) {  
  22.         tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);  
  23.     }  
  24.       
  25.     // 查询成功后调用的回调函数  
  26.     function querySuccess(tx, results) {  
  27.         var len = results.rows.length;  
  28.         console.log("DEMO table: " + len + " rows found.");  
  29.         for (var i=0; i<len; i++){  
  30.             console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);  
  31.         }  
  32.     }  
  33.       
  34.     // 事务执行出错后调用的回调函数  
  35.     function errorCB(err) {  
  36.         console.log("Error processing SQL: "+err.code);  
  37.     }  
  38.       
  39.     // 事务执行成功后调用的回调函数  
  40.     function successCB() {  
  41.         var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  42.         db.transaction(queryDB, errorCB);  
  43.     }  
  44.       
  45.     // PhoneGap加载完毕  
  46.     function onDeviceReady() {  
  47.         var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  48.         db.transaction(populateDB, errorCB, successCB);  
  49.     }  
  50.   
  51. </script>  
  52. </head>  
  53. <body>  
  54.     <h1>Example</h1>  
  55.     <p>Database</p>  
  56. </body>  
  57. </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)的访问。
  1. var storage = window.localStorage;  
方法:
  • key:返回指定位置的键的名称。
  • getItem: 返回指定键所对应的记录。
  • setItem:存储一个键值对。
  • removeItem:删除指定键对应的记录。
  • clear:删除所有的键值对。
详述:
localStorage提供对W3C Storage接口的访问,可以使用键值对的方式存储数据。
支持的平台:
  • Android
  • BlackBerry WebWorks(OS 6.0或更高版本)
  • iPhone
Key 的简单范例:
  1. var keyName = window.localStorage.key(0);  
Set Item的简单范例:
  1. window.localStorage.setItem("key", "value");  
Get Item的简单范例:
  1. var value = window.localStorage.getItem("key");  
  2. // value的值现在是"value"  
Remove Item的简单范例:
  1. window.localStorage.removeItem("key");  
Clear的简单范例:
  1. window.localStorage.clear();  
完整的范例:
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>      
  4. <title>Contact Example</title>  
  5.   
  6. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>  
  7. <script type="text/javascript" charset="utf-8">  
  8.   
  9. // 等待加载PhoneGap  
  10. document.addEventListener("deviceready", onDeviceReady, false);   
  11.   
  12. // PhoneGap加载完毕  
  13. function onDeviceReady() {  
  14.     window.localStorage.setItem("key", "value");  
  15.     var keyname = window.localStorage.key(i);  
  16.     [译注:应当是var keyname = window.localStorage.key(0);]  
  17.     // keyname的值现在是“key”  
  18.     var value = window.localStorage.getItem("key");  
  19.     // value的值现在是“value”  
  20.     window.localStorage.removeItem("key");  
  21.     window.localStorage.setItem("key2", "value2");  
  22.     window.localStorage.clear();  
  23.     // localStorage现在是空的  
  24. }  
  25.   
  26. </script>  
  27. </head>  
  28. <body>  
  29.     <h1>Example</h1>  
  30.     <p>localStorage</p>  
  31. </body>  
  32. </html>  

头晕

不解

扯淡

搞笑

欠扁

超赞

支持

难过

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关闭

站长推荐 上一条 /1 下一条

ionic4视频教程

Archiver|手机版|小黑屋| PhoneGap中文网 ( 京ICP备13027796号-1 )  

GMT+8, 2024-5-5 18:16 , Processed in 0.038509 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

返回顶部