- WebSQL (
window.openDatabase
) является устаревшим веб-стандартом. Но он доступен в большинстве десктопных и мобильных браузеров. Большинство браузеров реализуют спецификацию с помощью SQLite. В Android браузеры и WebViews поддерживают WebSQL, наряду с локальным хранилищем и хранилищем сеансов из первых версий, а также IndexedDB, начиная с KitKat.
Затем мы видим, что Android независимо поддерживает SQLite для использования из API Java в качестве одного из основных механизмов сохранения.
Кордова особенная. Приложение запускается в WebView, поэтому оно должно использовать WebSQL, но в Android плагин переопределяет API и внедряет в объект окна новые функции, которые по умолчанию могут использоваться в другой реализации, а не в API браузера.
Таким образом, в приложении Cordova после загрузки, когда вы вызываете openDatabase
, вы фактически вызываете новую функцию, которую Cordova поместила в объект Windows, перекрывая старую стандартную функцию. Из документов Cordova:
Некоторые устройства уже поддерживают эту спецификацию. Для этих устройств используется встроенная поддержка вместо замены реализацией Cordova. Для устройств, не поддерживающих хранение, реализация Cordova должна быть совместима со спецификацией W3C.
Эта цитата неоднозначна, и ее больше нет в документах. Под «встроенным» они подразумевали встроенную поддержку WebSQL в WebView. Документы, которые я связал, старые, из версии 2.x. В этих версиях Cordova по умолчанию использовала пользовательскую реализацию только в том случае, если WebView не поддерживал WebSQL (я думаю, этого никогда не было) или если на устройство влиял ошибка 16175. Реализация по умолчанию состояла в использовании плагина Storage.java
, который использовал Java API для создания базы данных SQLite. Я читал последние источники и более новые (3 .x), кажется, они всегда используют WebSQLite.
Да, оба создают файл БД, но путь к нему будет другим. Фактически вы можете открыть одну и ту же БД из кода JavaScript и кода Java в своем приложении.
Тот же тип БД. SQLite — это собственный слой C, который управляет файловой структурой. Фактически, вы также можете использовать этот собственный C API из собственного приложения для Android.
Cordova/Phonegap используют SQLIte из встроенной поддержки, если она доступна (в Android она есть).
Да, они остаются там.
Да, есть предел. Проверьте здесь для получения дополнительной информации.
person
Mister Smith
schedule
27.06.2014