===== Storage =====
==== 설명 ====
* 디바이스의 스토리지 접근 API
==== 제약사항 ====
* Storage API의 플랫폼별 제약사항은 다음과 같다.
=== Android ===
== Database ==
* Android 1.x 단말기에서는 이 함수를 지원하지 않는다.
=== iOS ===
N/A
==== 환경 설정 ====
=== Android ===
* app/res/xml/config.xml
* app/AndroidManifest
No permissions are required.
=== iOS ===
* App/Supporting Files/config.xml
==== 관련 함수 ====
=== openDatabase ===
* 데이터베이스를 제어할 수 있도록 하는 객체.
var dbShell = window.openDatabase(database_name, database_version, database_displayname, database_size);
* Quick Example :
var db = window.openDatabase("test", "1.0", "Test DB", 1000000);
==== 파라미터 ====
=== name ===
* 데이터베이스의 이름.
=== version ===
* 데이터베이스의 버전 정보.
=== display_name ===
* 데이터베이스의 표시 이름.
=== size ===
* Bytes 단위의 데이터베이스 크기.
==== Objects ====
=== Database ===
* 사용자가 데이터베이스를 조작할 수 있도록 함수를 제공하는 객체.
function populateDB(tx) {
tx.executeSql('DROP TABLE IF EXISTS DEMO');
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", "Cordova Demo", 200000);
db.transaction(populateDB, errorCB, successCB);
=== SQLTransaction ===
* 데이터베이스 객체에 SQL 질의를 할 수 있도록 하는 트랜잭션 객체
function populateDB(tx) {
tx.executeSql('DROP TABLE IF EXISTS DEMO');
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", "Cordova Demo", 200000);
db.transaction(populateDB, errorCB, successCB);
=== SQLResultSet ===
* SQLTransaction 객체의 executeSql 함수가 수행된 후, SQLResultSet를 통해 결과가 보여지게 된다.
function queryDB(tx) {
tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}
function querySuccess(tx, results) {
console.log("Returned rows = " + results.rows.length);
// this will be true since it was a select statement and so rowsAffected was 0
if (!resultSet.rowsAffected) {
console.log('No rows affected!');
return false;
}
// for an insert statement, this property will return the ID of the last inserted row
console.log("Last inserted row ID = " + results.insertId);
}
function errorCB(err) {
alert("Error processing SQL: "+err.code);
}
var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
db.transaction(queryDB, errorCB);
=== SQLResultSetList ===
* SQL 질의를 통해, 구해진 레코드(SQLResultSet 객체)의 속성 중 하나이다.
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
=== SQLError ===
* 에러가 발생했을 경우, 에러 정보를 가지고 있는 객체.
* Constants :
^유형^
|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|
=== localStorage ===
* W3C Storage interface 접근을 지원한다.
var storage = window.localStorage;
==== 참고 자료 ====
* Phonegap : http://docs.phonegap.com/en/2.9.0/cordova_notification_notification.md.html#Notification