解析PhoneGap API帮助文档翻译Storage存储

移动开发
PhoneGap API帮助文档翻译Storage存储是本文要介绍的内容,主要是来了解并学习PhoneGap API文档的内容,具体关于PhoneGap API文档内容的详解来看本文。

PhoneGap API帮助文档翻译Storage存储是本文要介绍的内容,主要是来了解并学习PhoneGap API文档的内容,具体关于PhoneGap API文档内容的详解来看本文。

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

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

openDatabase

参数:

  1. name  
  2. version  
  3. display_name  
  4. size 

对象:

  1. Database  
  2. SQLTransaction  
  3. SQLResultSet  
  4. SQLResultSetList  
  5. SQLError  
  6. localStorage  
  7. openDatabase   

返回一个新的Database对象。

  1. var dbShell = window.openDatabase(name, version, display_name, size);    
  2. 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);    
  2. 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>    
  24. <!DOCTYPE html> 
  25. <html> 
  26. <head>   
  27. <title>Contact Example</title> 
  28.  
  29. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 
  30. <script type="text/javascript" charset="utf-8"> 
  31.  
  32. // 等待加载PhoneGap  
  33. document.addEventListener("deviceready", onDeviceReady, false);   
  34.  
  35. // PhoneGap加载完毕  
  36. function onDeviceReady() {  
  37.  var db = window.openDatabase("test", "1.0", "Test DB", 1000000);  
  38. }  
  39.  
  40. </script> 
  41. </head> 
  42. <body> 
  43.  <h1>Example</h1> 
  44.  <p>Open Database</p> 
  45. </body> 
  46. </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);    
  18. function populateDB(tx) {  
  19.  tx.executeSql('DROP TABLE DEMO IF EXISTS');  
  20.  tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');  
  21.  tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');  
  22.  tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');  
  23. }  
  24.  
  25. function errorCB(err) {  
  26.     alert("Error processing SQL: "+err.code);  
  27. }  
  28.  
  29. function successCB() {  
  30.     alert("success!");  
  31. }  
  32.  
  33. var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  34. db.transaction(populateDB, errorCB, successCB);  
  35. Change Version的简单范例:  
  36. view plaincopy to clipboardprint?var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);    
  37. db.changeVersion("1.0", "1.1");    
  38. var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  39. 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>    
  43. <!DOCTYPE html> 
  44. <html> 
  45. <head>   
  46. <title>Contact Example</title> 
  47.  
  48. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 
  49. <script type="text/javascript" charset="utf-8"> 
  50.  
  51.  // 等待加载PhoneGap  
  52.  document.addEventListener("deviceready", onDeviceReady, false);   
  53.    
  54.  // PhoneGap加载完毕  
  55.  function onDeviceReady() {  
  56.   var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  57.   db.transaction(populateDB, errorCB, successCB);  
  58.  }  
  59.    
  60.  // 填充数据库  
  61.  function populateDB(tx) {  
  62.   tx.executeSql('DROP TABLE DEMO IF EXISTS');  
  63.   tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');  
  64.   tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');  
  65.   tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');  
  66.  }  
  67.    
  68.  // 事务执行出错后调用的回调函数  
  69.  function errorCB(tx, err) {  
  70.   alert("Error processing SQL: "+err);  
  71.  }  
  72.    
  73.  // 事务执行成功后调用的回调函数  
  74.  function successCB() {  
  75.   alert("success!");  
  76.  }  
  77.  
  78. </script> 
  79. </head> 
  80. <body> 
  81.  <h1>Example</h1> 
  82.  <p>Database</p> 
  83. </body> 
  84. </html> 

#p#

Android 1.X 的特异情况:

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

SQLTransaction 

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

PhoneGap API方法:

executeSql:执行一条SQL语句。

PhoneGap API详述:

当你调用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);    
  18. function populateDB(tx) {  
  19.  tx.executeSql('DROP TABLE DEMO IF EXISTS');  
  20.  tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');  
  21.  tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');  
  22.  tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');  
  23. }  
  24.  
  25. function errorCB(err) {  
  26.     alert("Error processing SQL: "+err);  
  27. }  
  28.  
  29. function successCB() {  
  30.     alert("success!");  
  31. }  
  32.  
  33. var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  34. 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>    
  43. <!DOCTYPE html> 
  44. <html> 
  45. <head>   
  46. <title>Contact Example</title> 
  47.  
  48. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 
  49. <script type="text/javascript" charset="utf-8"> 
  50.  
  51. // 等待加载PhoneGap  
  52. document.addEventListener("deviceready", onDeviceReady, false);  
  53.  
  54. // PhoneGap加载完毕  
  55. function onDeviceReady() {  
  56.     var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  57.     db.transaction(populateDB, errorCB, successCB);  
  58. }  
  59.  
  60. // 填充数据库  
  61. function populateDB(tx) {  
  62.  tx.executeSql('DROP TABLE DEMO IF EXISTS');  
  63.  tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');  
  64.  tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');  
  65.  tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');  
  66. }  
  67.  
  68. // 事务执行出错后调用的回调函数  
  69. function errorCB(err) {  
  70.     alert("Error processing SQL: "+err);  
  71. }  
  72.  
  73. // 事务执行成功后调用的回调函数  
  74. function successCB() {  
  75.     alert("success!");  
  76. }  
  77.  
  78. </script> 
  79. </head> 
  80. <body> 
  81.  <h1>Example</h1> 
  82.  <p>SQLTransaction</p> 
  83. </body> 
  84. </html> 
  85. SQLResultSet   

#p#

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

PhoneGap API属性:

insertId:SQLResultSet对象通过SQL语句插入到数据库的行记录的行ID。[译注:如果插入多行的时候,返回最后一个行的ID]

rowAffected:被SQL语句改变的记录行数,如果语句没有影响任何行则设置为0。

rows:是一个SQLResultSetRowList对象,表示返回的多条记录。如果没有返回任何记录,则此对象为空。

PhoneGap API详述:

当你调用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);    
  20. function queryDB(tx) {  
  21.  tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);  
  22. }  
  23.  
  24. function querySuccess(tx, results) {  
  25.  // 因为没有插入记录,所以返回值为空  
  26.  console.log("Insert ID = " + results.insertId);  
  27.  // 因为这是一条查询语句所以返回值为0  
  28.  console.log("Rows Affected = " + results.rowAffected);  
  29.  // 返回查询到的记录行数量  
  30.  console.log("Insert ID = " + results.rows.length);  
  31. }  
  32.  
  33. function errorCB(err) {  
  34.  alert("Error processing SQL: "+err.code);  
  35. }  
  36.  
  37. var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  38. 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>    
  59. <!DOCTYPE html> 
  60. <html> 
  61. <head>   
  62. <title>Contact Example</title> 
  63.  
  64. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 
  65. <script type="text/javascript" charset="utf-8"> 
  66.  
  67.  // 等待加载PhoneGap  
  68.  document.addEventListener("deviceready", onDeviceReady, false);  
  69.    
  70.  // 填充数据库  
  71.  function populateDB(tx) {  
  72.   tx.executeSql('DROP TABLE DEMO IF EXISTS');  
  73.   tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');  
  74.   tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');  
  75.   tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');  
  76.  }  
  77.    
  78.  // 查询数据库  
  79.  function queryDB(tx) {  
  80.   tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);  
  81.  }  
  82.    
  83.  // 查询成功后调用的回调函数  
  84.  function querySuccess(tx, results) {  
  85.   // 因为没有插入记录,所以返回值为空  
  86.   console.log("Insert ID = " + results.insertId);  
  87.   // 因为这是一条查询语句所以返回值为0  
  88.   console.log("Rows Affected = " + results.rowAffected);  
  89.   // 返回查询到的记录行数量  
  90.   console.log("Insert ID = " + results.rows.length);  
  91.  }  
  92.    
  93.  // 事务执行出错后调用的回调函数  
  94.  function errorCB(err) {  
  95.   console.log("Error processing SQL: "+err.code);  
  96.  }  
  97.    
  98.  // 事务执行成功后调用的回调函数  
  99.  function successCB() {  
  100.   var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  101.   db.transaction(queryDB, errorCB);  
  102.  }  
  103.    
  104.  // PhoneGap加载完毕  
  105.  function onDeviceReady() {  
  106.   var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  107.   db.transaction(populateDB, errorCB, successCB);  
  108.  }  
  109.  
  110. </script> 
  111. </head> 
  112. <body> 
  113.  <h1>Example</h1> 
  114.  <p>Database</p> 
  115. </body> 
  116. </html> 
  117. SQLResultSetList   

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

PhoneGap API属性:

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

PhoneGap API方法:

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

PhoneGap API详述:

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

支持的平台:

Android

BlackBerry WebWorks (OS BlackBerry WebWorks (OS 6.0或更高版本)

iPhone

#p#

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);    
  19. function queryDB(tx) {  
  20.     tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);  
  21. }  
  22.  
  23. function querySuccess(tx, results) {  
  24.     var len = results.rows.length;  
  25.     console.log("DEMO table: " + len + " rows found.");  
  26.     for (var i=0; i<len; i++){  
  27.      console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);  
  28.     }  
  29. }  
  30.  
  31. function errorCB(err) {  
  32.     alert("Error processing SQL: "+err.code);  
  33. }  
  34.  
  35. var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  36. 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>    
  58. <!DOCTYPE html> 
  59. <html> 
  60. <head>   
  61. <title>Contact Example</title> 
  62.  
  63. <script type="text/javascript" charset="utf-8" src="phonegap.js"></script> 
  64. <script type="text/javascript" charset="utf-8"> 
  65.  
  66.  // 等待加载PhoneGap  
  67.  document.addEventListener("deviceready", onDeviceReady, false);   
  68.    
  69.  // 填充数据库  
  70.  function populateDB(tx) {  
  71.   tx.executeSql('DROP TABLE DEMO IF EXISTS');  
  72.   tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');  
  73.   tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');  
  74.   tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');  
  75.  }  
  76.    
  77.  // 查询数据库  
  78.  function queryDB(tx) {  
  79.   tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);  
  80.  }  
  81.    
  82.  // 查询成功后调用的回调函数  
  83.  function querySuccess(tx, results) {  
  84.   var len = results.rows.length;  
  85.   console.log("DEMO table: " + len + " rows found.");  
  86.   for (var i=0; i<len; i++){  
  87.    console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);  
  88.   }  
  89.  }  
  90.    
  91.  // 事务执行出错后调用的回调函数  
  92.  function errorCB(err) {  
  93.   console.log("Error processing SQL: "+err.code);  
  94.  }  
  95.    
  96.  // 事务执行成功后调用的回调函数  
  97.  function successCB() {  
  98.   var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  99.   db.transaction(queryDB, errorCB);  
  100.  }  
  101.    
  102.  // PhoneGap加载完毕  
  103.  function onDeviceReady() {  
  104.   var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);  
  105.   db.transaction(populateDB, errorCB, successCB);  
  106.  }  
  107.  
  108. </script> 
  109. </head> 
  110. <body> 
  111.  <h1>Example</h1> 
  112.  <p>Database</p> 
  113. </body> 
  114. </html> 
  115. 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接口

  1. http://dev.w3.org/html5/webstorage/#the-localstorage-attribute 

的访问。

  1. var storage = window.localStorage;    
  2. 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);    
  2. var keyName = window.localStorage.key(0); 

Set Item的简单范例:

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

Get Item的简单范例:

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

Remove Item的简单范例:

  1. window.localStorage.removeItem("key");    
  2. window.localStorage.removeItem("key"); 

Clear的简单范例:

  1. window.localStorage.clear();    
  2. 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>   

小结:解析PhoneGap API帮助文档翻译Storage存储的内容介绍完了,希望通过本文的PhoneGap API文档的学习能对你有所帮助!

【编辑推荐】

  1. 解析PhoneGap API帮助文档翻译Events事件
  2. 解析PhoneGap API帮助文档翻译Device设备
  3. 解析PhoneGap API帮助文档翻译Connection连接
  4. PhoneGap API帮助文档翻译Notification提醒
  5. 解析PhoneGap API帮助文档翻译Storage存储
  6. 解析PhoneGap API帮助文档翻译Accelerometer加速度计
责任编辑:zhaolei 来源: 网络转载
相关推荐

2011-09-13 10:17:26

PhoneGap AP

2011-09-13 10:40:25

PhoneGap AP

2011-09-13 11:06:08

PhoneGap AP

2011-09-13 14:40:16

PhoneGap AP

2011-09-13 13:47:56

PhoneGap AP

2011-09-13 16:08:58

PhoneGap AP

2011-09-13 15:51:11

PhoneGap AP

2011-09-13 16:24:11

PhoneGap AP

2011-09-13 13:17:27

PhoneGap AP

2011-12-22 10:45:32

PhoneGap APStorage

2011-10-11 09:50:44

PhoneGap常见问题

2011-10-11 09:03:57

常见问题PhoneGap

2009-07-26 20:36:07

EclipseJDKAPI帮助文档

2011-12-20 11:20:46

PhoneGap APCompass

2011-12-19 16:09:32

PhoneGap APCamera

2011-12-22 09:54:40

PhoneGap APMedia

2011-12-22 09:27:36

PhoneGap APGeolocation

2011-12-19 16:26:39

PhoneGap APCapture

2011-12-22 10:33:39

PhoneGap APNotificatio

2011-12-21 21:56:45

PhoneGap APFile
点赞
收藏

51CTO技术栈公众号