自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PhoneGap API介紹:Storage

移動(dòng)開(kāi)發(fā)
本文將介紹PhoneGap API——Storage:截獲設(shè)備的本地存儲(chǔ)選項(xiàng)。Storage提供對(duì)設(shè)備的存儲(chǔ)選項(xiàng)的訪問(wèn)。此API基于W3C WEB SQL Database Specification和W3C Web Storage API Specification。有些設(shè)備已經(jīng)提供了對(duì)該規(guī)范的實(shí)現(xiàn),對(duì)于這些設(shè)備采用內(nèi)置實(shí)現(xiàn)而非使用PhoneGap的實(shí)現(xiàn)。對(duì)于沒(méi)有存儲(chǔ)支持的設(shè)備,PhoneGap的實(shí)現(xiàn)應(yīng)該是完全兼容W3C規(guī)范。

方法

參數(shù)

對(duì)象:

 openDatabase

  • 返回一個(gè)新的Database對(duì)象。
  1. var dbShell = window.openDatabase(name, version, display_name, size); 

說(shuō)明

  • window.openDatabase返回一個(gè)新的Database對(duì)象。
  • 該方法將創(chuàng)建一個(gè)新的SQL Lite數(shù)據(jù)庫(kù),并返回該Database對(duì)象??墒褂迷揇atabase對(duì)象操作數(shù)據(jù)。

支持的平臺(tái)

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

簡(jiǎn)單的范例

  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. </script> 
  17. </head> 
  18. <body> 
  19.     <h1>Example</h1> 
  20.     <p>Open Database</p> 
  21. </body> 
  22. </html> 

name
數(shù)據(jù)庫(kù)的名稱。
version

  • 數(shù)據(jù)庫(kù)的版本號(hào)。

display_name

  • 數(shù)據(jù)庫(kù)的顯示名。

size

  • 以字節(jié)為單位的數(shù)據(jù)庫(kù)大小。

Database

  • 包含允許用戶操作數(shù)據(jù)庫(kù)的方法。

方法

  • transaction:運(yùn)行一個(gè)數(shù)據(jù)庫(kù)事務(wù)。
  • changeVersion:該方法允許腳本執(zhí)行以下原子操作:校驗(yàn)數(shù)據(jù)庫(kù)的版本號(hào)并更新版本號(hào)以完成架構(gòu)更新。

詳述

  • 調(diào)用window.openDatabase()將返回一個(gè)Database對(duì)象。

支持的平臺(tái)

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

Transaction 的簡(jiǎn)單范例

  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. function errorCB(err) { 
  8.        alert("Error processing SQL: "+err.code); 
  9.  
  10. function successCB() { 
  11.        alert("success!"); 
  12.  
  13. var db = window.openDatabase("Database""1.0""PhoneGap Demo", 200000); 
  14. db.transaction(populateDB, errorCB, successCB); 
  15. Change Version的簡(jiǎn)單范例: 
  16.  
  17. var db = window.openDatabase("Database""1.0""PhoneGap Demo", 200000); 
  18. 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.     // 填充數(shù)據(jù)庫(kù) 
  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.     // 事務(wù)執(zhí)行出錯(cuò)后調(diào)用的回調(diào)函數(shù) 
  27.     function errorCB(tx, err) { 
  28.         alert("Error processing SQL: "+err); 
  29.     } 
  30.      
  31.     // 事務(wù)執(zhí)行成功后調(diào)用的回調(diào)函數(shù) 
  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設(shè)備不支持此方法。

SQLTransaction

  • 包含允許用戶對(duì)Database對(duì)象執(zhí)行SQL語(yǔ)句的方法。

方法

  • executeSql:執(zhí)行一條SQL語(yǔ)句。

詳述

  • 當(dāng)你調(diào)用Database對(duì)象的transaction方法后,其回調(diào)函數(shù)將被調(diào)用并接收一個(gè)SQLTransaction對(duì)象。用戶可以通過(guò)多次調(diào)用executeSql來(lái)建立一個(gè)數(shù)據(jù)庫(kù)事務(wù)處理。

支持的平臺(tái)

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

Execute SQL的簡(jiǎn)單范例

  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. function errorCB(err) { 
  8.        alert("Error processing SQL: "+err); 
  9.  
  10. function successCB() { 
  11.        alert("success!"); 
  12.  
  13. var db = window.openDatabase("Database""1.0""PhoneGap Demo", 200000); 
  14. 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. // 填充數(shù)據(jù)庫(kù) 
  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. // 事務(wù)執(zhí)行出錯(cuò)后調(diào)用的回調(diào)函數(shù) 
  25. function errorCB(err) { 
  26.        alert("Error processing SQL: "+err); 
  27.  
  28. // 事務(wù)執(zhí)行成功后調(diào)用的回調(diào)函數(shù) 
  29. function successCB() { 
  30.        alert("success!"); 
  31.  
  32. </script> 
  33. </head> 
  34. <body> 
  35.     <h1>Example</h1> 
  36.     <p>SQLTransaction</p> 
  37. </body> 
  38. </html> 

SQLResultSet

  • 當(dāng)SQLTransaction對(duì)象的executeSql方法被調(diào)用,將會(huì)觸發(fā)executeSql中設(shè)定的回調(diào)函數(shù)并返回一個(gè)SQLResultSet對(duì)象。

屬性

  • insertId:SQLResultSet對(duì)象通過(guò)SQL語(yǔ)句插入到數(shù)據(jù)庫(kù)的行記錄的行ID。[譯注:如果插入多行的時(shí)候,返回***一個(gè)行的ID]
  • rowAffected:被SQL語(yǔ)句改變的記錄行數(shù),如果語(yǔ)句沒(méi)有影響任何行則設(shè)置為0。
  • rows:是一個(gè)SQLResultSetRowList對(duì)象,表示返回的多條記錄。如果沒(méi)有返回任何記錄,則此對(duì)象為空。

詳述

  • 當(dāng)你調(diào)用SQLTransaction對(duì)象的executeSql方法,將會(huì)觸發(fā)executeSql中設(shè)定的回調(diào)函數(shù)并返回一個(gè)SQLResultSet對(duì)象。該結(jié)果對(duì)象包含三個(gè)屬性:***個(gè)是insertID返回成功的SQL插入語(yǔ)句所插入行的ID,如果SQL語(yǔ)句不是插入語(yǔ)句則insertID將不被設(shè)定;第二個(gè)是rowAffected,在SQL查詢操作時(shí)此屬性總是0,當(dāng)插入或更新操作時(shí)此屬性返回受到影響的行數(shù);***一個(gè)屬性是SQLResultSetList類型,返回SQL查詢語(yǔ)句的返回?cái)?shù)據(jù)。

支持的平臺(tái)

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

Execute SQL的簡(jiǎn)單范例

  1. function queryDB(tx) { 
  2.     tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB); 
  3.  
  4. function querySuccess(tx, results) { 
  5.     // 因?yàn)闆](méi)有插入記錄,所以返回值為空 
  6.     console.log("Insert ID = " + results.insertId); 
  7.     // 因?yàn)檫@是一條查詢語(yǔ)句所以返回值為0 
  8.     console.log("Rows Affected = " + results.rowAffected); 
  9.     // 返回查詢到的記錄行數(shù)量 
  10.     console.log("Insert ID = " + results.rows.length); 
  11.  
  12. function errorCB(err) { 
  13.     alert("Error processing SQL: "+err.code); 
  14.  
  15. var db = window.openDatabase("Database""1.0""PhoneGap Demo", 200000); 
  16. 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.     // 填充數(shù)據(jù)庫(kù) 
  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.     // 查詢數(shù)據(jù)庫(kù) 
  21.     function queryDB(tx) { 
  22.         tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB); 
  23.     } 
  24.      
  25.     // 查詢成功后調(diào)用的回調(diào)函數(shù) 
  26.     function querySuccess(tx, results) { 
  27.         // 因?yàn)闆](méi)有插入記錄,所以返回值為空 
  28.         console.log("Insert ID = " + results.insertId); 
  29.         // 因?yàn)檫@是一條查詢語(yǔ)句所以返回值為0 
  30.         console.log("Rows Affected = " + results.rowAffected); 
  31.         // 返回查詢到的記錄行數(shù)量 
  32.         console.log("Insert ID = " + results.rows.length); 
  33.     } 
  34.      
  35.     // 事務(wù)執(zhí)行出錯(cuò)后調(diào)用的回調(diào)函數(shù) 
  36.     function errorCB(err) { 
  37.         console.log("Error processing SQL: "+err.code); 
  38.     } 
  39.      
  40.     // 事務(wù)執(zhí)行成功后調(diào)用的回調(diào)函數(shù) 
  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對(duì)象的一個(gè)屬性,包含SQL查詢所返回的所有行數(shù)據(jù)。

屬性

  • length: SQL查詢所返回的記錄行數(shù)。

方法

  • item:根據(jù)指定索引返回一個(gè)行記錄的JavaScript對(duì)象。

詳述

  • SQlResultSetList包含一個(gè)SQL查詢語(yǔ)句所返回的數(shù)據(jù)。該對(duì)象包含一個(gè)長(zhǎng)度屬性告知用戶有多少符合查詢條件的行記錄數(shù)被返回。通過(guò)傳遞指定的索引給該對(duì)象的item方法獲取指定的行記錄數(shù)據(jù),此item方法返回一個(gè)JavaScript對(duì)象,其屬性包含前述查詢語(yǔ)句所針對(duì)的數(shù)據(jù)庫(kù)的所有列。

支持的平臺(tái)

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

Execute SQL的簡(jiǎn)單范例

  1. function queryDB(tx) { 
  2.        tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB); 
  3.  
  4. function querySuccess(tx, results) { 
  5.        var len = results.rows.length; 
  6.        console.log("DEMO table: " + len + " rows found."); 
  7.        for (var i=0; i<len; i++){ 
  8.            console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data); 
  9.        } 
  10.  
  11. function errorCB(err) { 
  12.        alert("Error processing SQL: "+err.code); 
  13.  
  14. var db = window.openDatabase("Database""1.0""PhoneGap Demo", 200000); 
  15. 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.     // 填充數(shù)據(jù)庫(kù) 
  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.     // 查詢數(shù)據(jù)庫(kù) 
  21.     function queryDB(tx) { 
  22.         tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB); 
  23.     } 
  24.      
  25.     // 查詢成功后調(diào)用的回調(diào)函數(shù) 
  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.     // 事務(wù)執(zhí)行出錯(cuò)后調(diào)用的回調(diào)函數(shù) 
  35.     function errorCB(err) { 
  36.         console.log("Error processing SQL: "+err.code); 
  37.     } 
  38.      
  39.     // 事務(wù)執(zhí)行成功后調(diào)用的回調(diào)函數(shù) 
  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

  • 出現(xiàn)錯(cuò)誤時(shí),將拋出一個(gè)SQLError對(duì)象。

屬性

  • code: 一個(gè)在下面常量列表中定義好的錯(cuò)誤代碼c。
  • message:關(guān)于此錯(cuò)誤的說(shuō)明。

常量

  • SQLError.UNKNOWN_ERR:未知錯(cuò)誤
  • SQLError.DATABASE_ERR:數(shù)據(jù)庫(kù)錯(cuò)誤
  • SQLError.VERSION_ERR:版本錯(cuò)誤
  • SQLError.TOO_LARGE_ERR:數(shù)據(jù)集過(guò)大錯(cuò)誤
  • SQLError.QUOTA_ERR:超過(guò)數(shù)據(jù)庫(kù)配額錯(cuò)誤
  • SQLError.SYNTAX_ERR:語(yǔ)法錯(cuò)誤
  • SQLError.CONSTRAINT_ERR:約束錯(cuò)誤
  • SQLError.TIMEOUT_ERR:超時(shí)錯(cuò)誤

說(shuō)明

  • 操作數(shù)據(jù)庫(kù)出現(xiàn)錯(cuò)誤時(shí),將拋出一個(gè)SQLError對(duì)象。

localStorage

  • 提供對(duì)W3C Storage接口(http://dev.w3.org/html5/webstorage/#the-localstorage-attribute)的訪問(wèn)。
  1. var storage = window.localStorage; 

方法

  • key:返回指定位置的鍵的名稱。
  • getItem: 返回指定鍵所對(duì)應(yīng)的記錄。
  • setItem:存儲(chǔ)一個(gè)鍵值對(duì)。
  • removeItem:刪除指定鍵對(duì)應(yīng)的記錄。
  • clear:刪除所有的鍵值對(duì)。

詳述

  • localStorage提供對(duì)W3C Storage接口的訪問(wèn),可以使用鍵值對(duì)的方式存儲(chǔ)數(shù)據(jù)。

支持的平臺(tái)

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

Key 的簡(jiǎn)單范例

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

Set Item的簡(jiǎn)單范例

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

Get Item的簡(jiǎn)單范例

  1. var value = window.localStorage.getItem("key"); 
  2. // value的值現(xiàn)在是"value" 

Remove Item的簡(jiǎn)單范例

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

Clear的簡(jiǎn)單范例

  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.        [譯注:應(yīng)當(dāng)是var keyname = window.localStorage.key(0);] 
  17.        // keyname的值現(xiàn)在是“key” 
  18.        var value = window.localStorage.getItem("key"); 
  19.        // value的值現(xiàn)在是“value” 
  20.        window.localStorage.removeItem("key"); 
  21.        window.localStorage.setItem("key2", "value2"); 
  22.        window.localStorage.clear(); 
  23.        // localStorage現(xiàn)在是空的 
  24.  
  25. </script> 
  26. </head> 
  27. <body> 
  28.     <h1>Example</h1> 
  29.     <p>localStorage</p> 
  30. </body> 
  31. </html> 

 

責(zé)任編輯:佚名 來(lái)源: PhoneGap中國(guó)
相關(guān)推薦

2011-12-20 11:20:46

PhoneGap APCompass

2011-12-19 16:09:32

PhoneGap APCamera

2011-12-19 15:30:25

AccelerometPhoneGap AP

2011-12-20 15:34:55

PhoneGap APConnection

2011-12-20 17:15:52

PhoneGap APEvents

2011-12-22 10:33:39

PhoneGap APNotificatio

2011-12-21 21:56:45

PhoneGap APFile

2011-12-19 16:26:39

PhoneGap APCapture

2011-12-20 13:32:52

PhoneGap APContacts

2011-12-22 09:27:36

PhoneGap APGeolocation

2011-12-20 16:09:57

PhoneGap APDevice

2011-12-22 09:54:40

PhoneGap APMedia

2011-12-30 13:47:57

PhoneGap AP視頻Contacts

2011-12-30 14:09:32

PhoneGap APCompass視頻

2011-12-30 13:59:38

PhoneGap APDevice視頻

2011-12-30 14:05:17

PhoneGap APConnection視頻

2011-12-30 14:13:05

PhoneGap APCamera視頻

2011-12-30 14:16:02

AccelerometPhoneGap AP視頻

2011-09-13 14:07:45

PhoneGap AP

2011-07-05 17:29:53

PhoneGapevents
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)