>웹 프론트엔드 >H5 튜토리얼 >HTML5 로컬 저장소 - 웹 SQL 데이터베이스 세부정보

HTML5 로컬 저장소 - 웹 SQL 데이터베이스 세부정보

黄舟
黄舟원래의
2017-03-21 15:06:131242검색

HTML5에서 WebStorage는 html5 로컬 저장소의 Session 저장소를 도입합니다. 이 두 가지는 소량의 데이터 구조를 저장하는 데 유용한 키-값 쌍 저장소 솔루션입니다. 하지만 대량의 구조화된 데이터에 대해서는 할 수 있는 일이 없으며 유연성도 부족합니다.

웹 SQL 데이터베이스

우리는 데이터베이스에서 대량의 구조화된 데이터를 처리하는 경우가 많습니다. HTML5에서는 SQL을 사용하여 API를 조작하는 웹 SQL 데이터베이스라는 개념을 도입합니다. 클라이언트 데이터베이스의 이러한 API는 비동기식이며 사양에 사용되는 방언은 SQLlite입니다. 여기서 비극이 발생합니다. 웹 SQL 데이터베이스 사양 페이지에는

HTML5 로컬 저장소 - 웹 SQL 데이터베이스 세부정보

이 문서는 W3C 권장 사항 트랙에 있었지만 사양 작업이 중단되었습니다. 사양이 난관에 부딪혔습니다. 관심 있는 모든 구현자는 동일한 SQL 백엔드(Sqlite)를 사용했지만 표준화 경로를 따라 진행하려면 여러 개의 독립적인 구현이 필요합니다. .

아마도

이 문서는 W3C 권장 사양에 있었지만 사양 작업이 중단되었습니다. 현재의 모든 구현은 동일한 SQL 백엔드(SQLite)를 기반으로 하지만 표준화하려면 더 독립적인 구현이 필요합니다.

즉, 일부 브라우저에서 구현했지만 이는 폐기된 표준입니다. . . . . . .

세 가지 핵심 방법

하지만 배워서 나쁠 건 없고 현재 W3C에서 추진하고 있는 IndexedDB와 비교해 보면 이 솔루션을 버려야 하는 이유를 알 수 있습니다. 웹 SQL 데이터베이스 사양에 정의된 세 가지 핵심 메소드:

  1. openDatabase: 이 메소드는 기존 데이터베이스 또는 새 데이터베이스를 사용하여 데이터베이스 객체를 생성

  2. transaction: 이 메소드를 사용하면 상황에 따라 트랜잭션 커밋 또는 롤백을 제어할 수 있습니다.

  3. executeSql: 이 메소드는 트랜잭션을 실행하는 데 사용됩니다. SQL 쿼리

openDatabase

이러한 간단한 명령문을 사용하여 로컬 데이터베이스 개체를 생성하거나 열 수 있습니다

var db = openDatabase('testDB', '1.0', 'Test DB', 2 * 1024 * 1024);

openDatabase 5개의 매개변수 수신:

  1. 데이터베이스 이름

  2. 데이터베이스 버전 번호

  3. 표시 이름

  4. 데이터베이스에 저장된 데이터의 크기(바이트)

  5. 콜백 함수(선택)

콜백 함수가 제공되면 콜백 함수를 사용하여changeVersion() 함수를 호출합니다. 어떤 버전 번호가 지정되든 콜백 함수는 데이터베이스 버전 번호를 공백으로 설정합니다. 콜백 함수가 제공되지 않으면 해당 버전 번호로 데이터베이스가 생성됩니다.

transaction

트랜잭션 방식은 트랜잭션을 처리하는 데 사용됩니다. 문 실행이 실패하면 전체 트랜잭션이 롤백됩니다. 메소드에는 세 개의 매개변수가 있습니다

  1. 거래 내용이 포함된 메소드

  2. 실행 성공 콜백 함수(선택)

  3. 실행 실패 콜백 함수(선택)

db.transaction(function (context) {
           context.executeSql('CREATE TABLE IF NOT EXISTS testTable (id unique, name)');
           context.executeSql('INSERT INTO testTable (id, name) VALUES (0, "Byron")');
           context.executeSql('INSERT INTO testTable (id, name) VALUES (1, "Casper")');
           context.executeSql('INSERT INTO testTable (id, name) VALUES (2, "Frank")');
         });

이 예에서는 테이블을 생성하고 테이블에 3개의 데이터를 삽입했습니다. 4번의 실행 중 하나에서 오류가 발생했습니다. 전체 트랜잭션이 롤백됩니다.

executeSql

executeSql 메서드는 SQL 문을 실행하고 결과를 반환하는 데 사용됩니다. 이 메서드에는

  1. query String

  2. 쿼리 문자열에서 물음표를 대체하는 데 사용되는 매개 변수

  3. 실행 성공 콜백 함수(선택 사항) )

  4. 실행 실패 콜백 함수(선택)


위에서 예제 we insert 문이 사용된 쿼리 예제

db.transaction(function (context) {
           context.executeSql('SELECT * FROM testTable', [], function (context, results) {            
           var len = results.rows.length, i;
            console.log('Got '+len+' rows.');               
            for (i = 0; i < len; i++){
              console.log(&#39;id: &#39;+results.rows.item(i).id);
              console.log(&#39;name: &#39;+results.rows.item(i).name);
            }
         });

전체 예제


    Web SQL Database
    

드디어

Web SQL Database 사양이 폐기되었기 때문에 그 이유는 매우 현재 SQL 사양은 SQLite의 SQL 방언을 사용하며 이는 표준으로 허용되지 않으며 각 브라우저에는 자체 표준 구현이 있습니다. 이런 식으로 브라우저 호환성은 중요하지 않으며 아마도 점차 잊혀질 것입니다. 하지만 Chrome의 콘솔은 정말 사용하기 쉽습니다. Shenma쿠키, Local Storage, Session Storage, Web SQL, IndexedDB, Application Cache 및 기타 html5 새로 추가된 콘텐츠를 선명하게 볼 수 있어 디버깅 코드 작업이 많이 필요하지 않습니다.

HTML5 로컬 저장소 - 웹 SQL 데이터베이스 세부정보

위 내용은 HTML5 로컬 저장소 - 웹 SQL 데이터베이스 세부정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.