Heim  >  Artikel  >  Web-Frontend  >  Details zur lokalen HTML5-Speicherung – Web SQL-Datenbank

Details zur lokalen HTML5-Speicherung – Web SQL-Datenbank

黄舟
黄舟Original
2017-03-21 15:06:131180Durchsuche

In HTML5 führt WebStorage Local Storage und Session Storage von HTML5 Local Storage ein. Dabei handelt es sich um Schlüssel-Wert-Paar-Speicherlösungen, die zum Speichern einer kleinen Menge an Datenstrukturen nützlich sind Aber bei einer großen Menge strukturierter Daten kann man nichts machen und es ist nicht flexibel genug.

Web-SQL-Datenbank

Wir verarbeiten häufig große Mengen strukturierter Daten in der Datenbank. HTML5 führt das Konzept der Web-SQL-Datenbank ein, das SQL zur Manipulation der API verwendet der Client-Datenbank. Diese APIs sind asynchron und der in der Spezifikation verwendete Dialekt ist SQLlite. Hier tritt die Tragödie auf. Die Seite mit der Web-SQL-Datenbank-Spezifikation enthält eine solche Anweisung 🎜>

Dieses Dokument war auf dem W3C-Empfehlungspfad, aber die Spezifikationsarbeit wurde eingestellt. Die Spezifikation ist in eine Sackgasse geraten: Alle interessierten Implementierer haben das gleiche SQL-Backend (Sqlite) verwendet, aber wir benötigen mehrere unabhängige Implementierungen, um auf einem Standardisierungspfad fortzufahren .

Details zur lokalen HTML5-Speicherung – Web SQL-Datenbank

Bedeutet wahrscheinlich

Dieses Dokument befand sich einst in der vom W3C empfohlenen Spezifikation, aber die Spezifikationsarbeit wurde eingestellt. Wir sind in einer Sackgasse angekommen: Alle aktuellen Implementierungen basieren auf demselben SQL-Backend (SQLite), aber wir brauchen mehr unabhängige Implementierungen zur Standardisierung.

Mit anderen Worten, dies ist ein aufgegebener Standard, obwohl einige Browser ihn implementiert haben. . . . . . .

Drei Kernmethoden

Aber es schadet nicht, sie zu lernen, und wir können sie mit IndexedDB vergleichen, das derzeit vom W3C gefördert wird, um herauszufinden, warum diese Lösung aufgegeben werden sollte. Drei in der Web SQL-Datenbankspezifikation definierte Kernmethoden:

openDatabase: Diese Methode verwendet eine vorhandene Datenbank oder eine neue Datenbank, um

ein Datenbankobjekt

    zu erstellen
  1. Transaktion: Mit dieser Methode können wir das Commit oder Rollback der Transaktion je nach Situation steuern

  2. executeSql: Diese Methode wird zum Ausführen verwendet SQL

    Abfrage

  3. openDatabase

    Wir können eine so einfache Anweisung verwenden, um ein lokales Datenbankobjekt zu erstellen oder zu öffnen

openDatabase Empfängt fünf Parameter:

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

  1. Datenbankversionsnummer

  2. Anzeigename

  3. Die Größe der in der Datenbank gespeicherten Daten (in Bytes)

  4. Callback-Funktion

    (optional)
  5. Wenn eine Rückruffunktion bereitgestellt wird, wird die Rückruffunktion zum Aufrufen der Funktion „changeVersion()“ verwendet. Unabhängig von der angegebenen Versionsnummer setzt die Rückruffunktion die Datenbankversionsnummer auf leer. Wenn keine Callback-Funktion bereitgestellt wird, wird die Datenbank mit der angegebenen Versionsnummer erstellt.

    Transaktion
Die Transaktionsmethode wird zum Verarbeiten von Transaktionen verwendet. Wenn die Ausführung einer Anweisung fehlschlägt, wird die gesamte Transaktion zurückgesetzt. Die Methode hat drei Parameter

Eine Methode, die Transaktionsinhalt enthält

  1. Rückruffunktion für den Ausführungserfolg (optional)

  2. Rückruffunktion für Ausführungsfehler (optional)

  3. In diesem Beispiel erstellen wir eine Tabelle und fügen drei Datenelemente in die Tabelle ein. Eine der vier Ausführungsanweisungen erscheint Fehler, die gesamte Transaktion wird zurückgesetzt

  4. executeSql
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")');
         });
executeSql-Methode wird verwendet, um SQL-Anweisungen auszuführen und Ergebnisse zurückzugeben. Die Methode hat vier Parameter

Abfrage

String

  1. Parameter zum Ersetzen des Fragezeichens in der Abfragezeichenfolge

  2. Rückruffunktion für den Erfolg der Ausführung ( optional)

  3. Rückruffunktion bei Ausführungsfehler (optional)

  4. In der obiges Beispiel Wir haben die insert-Anweisung verwendet, schauen wir uns ein Abfragebeispiel an

  5. Vollständiges Beispiel

Endlich
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);
            }
         });

Weil die Web SQL-Datenbankspezifikation aufgegeben wurde , der Grund dafür ist: Es ist ganz klar, dass die aktuelle SQL-Spezifikation den SQL-Dialekt von SQLite verwendet, und als Standard ist dies inakzeptabel, da jeder Browser seine eigene Implementierung hat, die immer noch mit dem Standard in Konflikt steht. Auf diese Weise ist die Browserkompatibilität nicht wichtig und wird wahrscheinlich nach und nach vergessen. Aber

Chr

    Web SQL Database
    
omes Konsole ist wirklich einfach zu bedienen, Shenma

Cookie

, lokaler Speicher, Sitzungsspeicher, Web SQL, IndexedDB, Anwendungs-

Cache und anderes HTML5 Der neu hinzugefügte Inhalt ist deutlich zu erkennen, wodurch eine Menge Debugging Codearbeit entfällt.

Details zur lokalen HTML5-Speicherung – Web SQL-Datenbank

Das obige ist der detaillierte Inhalt vonDetails zur lokalen HTML5-Speicherung – Web SQL-Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn