===== 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/Cordova.plist No permissions are required. ==== 관련 함수 ==== === 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