Mit Cordova Version 3.x und Android Version 2.x bis 4.x.
Ich frage mich:
window.sqlite.openDatabase()
function wrapper um window.openDatabase()
? window.openDatabase
) ist ein veralteter Webstandard. Aber es ist in den meisten Desktop- und mobilen Browsern verfügbar. Die meisten Browser implementieren die Spezifikation mit SQLite. In Android unterstützen Browser und WebViews WebSQL zusammen mit lokalem Speicher und Sitzungsspeicher der ersten Versionen sowie IndexedDB seit KitKat. Dann haben wir Android, das unabhängig SQLite unterstützt, um von Java APIs als einer seiner wichtigsten Persistenzmechanismen verwendet zu werden.
Cordova ist etwas Besonderes. Die App wird in einem WebView ausgeführt, sodass sie WebSQL verwenden sollte. In Android überschreibt das Plug-In jedoch die API und fügt neue Funktionen in das Fensterobjekt ein, die möglicherweise anstelle der Browser-API eine andere Implementierung verwenden.
Wenn Sie also in einer Cordova-App geladen haben, rufen Sie bei Aufruf von openDatabase
tatsächlich eine neue Funktion auf, die Cordova in das windows-Objekt eingefügt hat, wobei die alte Standardfunktion überschrieben wird. Aus der Cordova-Dokumentation :
Einige Geräte bieten bereits eine Implementierung dieser Spezifikation. Für diese Geräte wird die integrierte Unterstützung verwendet, anstatt sie durch die Cordova-Implementierung zu ersetzen. Für Geräte, die keine Speicherunterstützung haben, sollte Cordovas Implementierung mit der W3C-Spezifikation kompatibel sein.
Dieses Zitat ist mehrdeutig und nicht mehr in den Dokumenten enthalten. Für "eingebaut" bedeutete das integrierte WebSQL-Unterstützung im WebView. Die Dokumente, die ich verlinkte, sind alt, ab einer 2.x-Version. In diesen Versionen war Cordova nur dann auf die benutzerdefinierte Implementierung voreingestellt, wenn WebView WebSQL nicht unterstützte (ich denke, dass dies nie geschehen ist) oder wenn das Gerät von der Fehler 16175 . Die Standardimplementierung bestand darin, das Storage.java
-Plugin zu verwenden, das die Java-API zum Erstellen einer SQLite-Datenbank verwendet hat. Ich habe die neuesten Quellen und die neueren (3.x) Versionen gelesen WebSQLite immer zu verwenden.
Ja beide erstellen eine DB-Datei, aber der Pfad zu ihr wird anders sein. Tatsächlich können Sie die gleiche DB aus dem JavaScript-Code und dem Java-Code in Ihrer App öffnen.
Gleiche Art von DB. SQLite ist eine native C-Ebene, die die Dateistruktur verwaltet. Tatsächlich könnten Sie diese native C-API auch von einer nativen Android-App aus verwenden.
Cordova / Phonegap verwendet SQLIte von der integrierten Unterstützung, wenn verfügbar (in Android ist es).
Ja, sie bleiben dort.
Ja, es gibt ein Limit. Überprüfen Sie hier , um weitere Informationen zu erhalten.
Tags und Links android cordova sqlite phonegap-plugins web-sql