Storage

설명

  • 디바이스의 스토리지 접근 API

제약사항

  • Storage API의 플랫폼별 제약사항은 다음과 같다.

Android

Database
  • Android 1.x 단말기에서는 이 함수를 지원하지 않는다.

iOS

N/A

환경 설정

Android

  • app/res/xml/config.xml
<plugin name="Storage" value="org.apache.cordova.Storage" />
  • app/AndroidManifest
No permissions are required.

iOS

  • App/Supporting Files/config.xml
    <feature name="LocalStorage">
        <param name="ios-package" value="CDVLocalStorage"/>
    </feature>

관련 함수

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<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", "Cordova Demo", 200000);
db.transaction(queryDB, errorCB);

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;

참고 자료

 
egovframework/hyb2.7/hrte/deviceapi/storage.txt · 마지막 수정: 2023/12/21 05:21 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki