본문 바로가기

WebDev

Web SQL

Web SQL

공식 문서 를 참고했다.

Web SQL은 더 이상 W3그룹에서 유지보수하지 않는다는 점을 명심하자. Web SQL을 W3그룹이나 브라우저 제작사들이 폐기하지는 않으나, 개선 또한 기대할 수 없다.

Web client가 javascript를 사용해 정보를 영속적으로 저장할 수 있는 방법은 LocalStorage, Indexed DB, Web SQL이 있다.

Web SQL?


Web SQL은 javascript를 사용해 늘상 해왔던 데이터베이스 관리를 하는 것이다. 다만 이 데이터베이스가 백엔드가 아닌 프론트엔드에 존재한다는 점이 다른 것이다.
AFAIK, 사실 Web SQL은 그저 SQLite를 javascript에서 쓸 수 있게 해놓은 것 뿐이다. 그게 다다.

Cheat Sheet


db = openDatabase('recipes', 1.0, 'recipes central database', 5 * 1024 * 1024);
db.transaction(
    function (tx) {
        // Create Table
        tx.executeSql('CREATE TABLE IF NOT EXISTS user(id, appname, age)');
        // Insert ROW
        tx.executeSql('INSERT OR IGNORE INTO user VALUES(?,?,?)', [null, 'makerj', 27]);
        // Select ROW
        tx.executeSql('SELECT * FROM user', [], function (tx, resultSet) {
            alert(resultSet.rowsAffected);
            for (var i = 0; i < resultSet.length; i++) {
                alert(JSON.stringify(resultSet.rows.item(i)));
            }
        });
    }, function (err) {alert(err.message)};

참고 권한 없이는 최대 5MB의 공간을 사용할 수 있다.

참고 db.transaction()은 비동기 함수다.

  • openDatabase(NAME, VERSION, DESCRIPTION, SIZE) 데이터베이스가 있으면 열고, 없으면 만든다.
  • transaction(FUNCTION) 트렌젝션 처리. 트렌젝션은 자동으로 데이터베이스에 커밋된다.
  • executeSql(SQL) 매개변수도 필요없고, 결과를 처리할 필요도 없는 CREATE TABLE과 같은 녀석에 적절한 함수
  • executeSql(SQL, ARGS) 매개변수가 필요할 때 적절한 함수. 매개변수는 배열로 넣어주자.
  • executeSql(SQL, ARGS, FUNCTION) SELECT에 적절한 함수. FUNCTION에서 resultSet을 획득할 수 있다.

resultSet의 정체는 아래와 같다:

interface SQLResultSet {
  readonly attribute long insertId; // can be **undefined**
  readonly attribute long rowsAffected; // 0 or above
  readonly attribute rows.length;
  readonly attribute rows.item(index);
};

'WebDev' 카테고리의 다른 글

tosync.js  (0) 2016.02.20
Chrome extension 개발  (0) 2016.02.16
django custom user  (0) 2016.02.07
django facebook login  (0) 2016.02.06
Python으로 현재 컴퓨터가 EC2인지 확인하기  (0) 2016.01.26