Diferencia entre las funciones window.openDatabase () y window.sqlitePlugin.openDatabase ()?

Uso de Cordova versión 3.x y Android versión 2.x a 4.x.

Me pregunto:

  1. ¿Es mi entendimiento correcto que todos los dispositivos android por defecto tienen un programa sqlite / interfaz para crear sqlite base de datos?
  2. ¿Las dos llamadas de función de base de datos anteriores crean una base de datos sqlite en el dispositivo?
  3. Si la respuesta anterior es no , ¿qué tipo de base de datos hacen las dos llamadas de función anteriores crear?
  4. Si la respuesta es , entonces es el wrapper de la función window.sqlite.openDatabase() alrededor de window.openDatabase() ?
  5. ¿Las bases de datos creadas por la llamada son persistentes? Es decir, ¿están los datos disponibles después de cerrar y reabrir las aplicaciones empacadas cordova?
  6. ¿Hay un tamaño máximo de base de datos que puede ser creado por los dos métodos anteriores?

  1. WebSQL ( window.openDatabase ) es un estándar web obsoleto. Pero está disponible en la mayoría de los navegadores de escritorio y móviles. La mayoría de los navegadores implementan la especificación usando SQLite. En Android, los navegadores y WebViews admiten WebSQL, junto con almacenamiento local y almacenamiento de sesión de las primeras versiones, y también IndexedDB desde KitKat.

Entonces tenemos que Android soporta independientemente SQLite para ser utilizado desde las API de Java como uno de sus principales mecanismos de persistencia.

Córdoba es especial. La aplicación se ejecuta en un WebView por lo que debe estar utilizando WebSQL, pero en Android el complemento sustituye a la API y los implantes en el objeto de ventana nuevas funciones que podrían predeterminado para una implementación diferente, en lugar de la API del navegador.

Así que en una aplicación de Cordova, una vez que se carga, cuando se llama openDatabase que está llamando a una nueva función que Cordova ha colocado en el objeto de Windows superación de la antigua estándar. De los documentos de Córdoba :

Algunos dispositivos ya proporcionan una implementación de esta especificación. Para esos dispositivos, se utiliza el soporte incorporado en lugar de reemplazarlo con la implementación de Cordova. Para los dispositivos que no tienen soporte de almacenamiento, la implementación de Cordova debe ser compatible con la especificación W3C.

Esa cita es ambigua y ya no en los documentos. Para "incorporado" significaba soporte WebSQL incorporado en el WebView. Los documentos que he vinculado son viejos, a partir de una versión 2.x. En esas versiones, Cordova solo hizo el default de la implementación personalizada si WebView no soporta WebSQL (creo que esto nunca sucedió) o si el dispositivo fue afectado por el bug 16175 . La implementación por defecto consistía en usar el complemento Storage.java que usaba la API de Java para crear una base de datos SQLite. He estado leyendo las fuentes más recientes y en versiones más recientes (3.x) parecen estar usando WebSQLite siempre.

  1. Sí, ambos crean un archivo DB, pero la ruta a él será diferente. De hecho, puede abrir el mismo DB desde el código JavaScript y el código Java en su aplicación.

  2. El mismo tipo de DB. SQLite es una capa C nativa que gestiona la estructura de archivos. De hecho, también puedes usar esta API nativa de C desde una aplicación nativa de Android.

  3. Cordova / Phonegap utiliza SQLIte desde el soporte incorporado si está disponible (en Android es).

  4. Sí, se quedan allí.

  5. Sí, hay un límite. Compruebe aquí para más información.

  • ¿Qué tipos de bases de datos están disponibles en Android?
  • Bucle a través de un Cursor SQLite lleva demasiado tiempo
  • Qué son los tipos de datos en SQLite que soportan android
  • Android Studios: Android Device Manager no muestra archivos para Nougat 7.0 en el Explorador de archivos
  • Contexto de acceso en ContentProvider
  • EditText afterTextChanged no funciona
  • ¿Cómo acceder a Android a una base de datos sqlite incluida en la carpeta de activos?
  • Problema con SQL Query Android Where Clause
  • Se eliminó la base de datos de Sqlite cuando borro datos de la aplicación
  • Cómo reemplazar CursorAdapter bindView
  • ¿Cómo conectarse a SQLite DB con contraseña con OrmLite?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.