2014-06-27 23 views
8

Sử dụng phiên bản Cordova 3.x và Phiên bản Android 2.x đến 4.x.sự khác nhau giữa các hàm window.openDatabase() và window.sqlitePlugin.openDatabase()?

tôi tự hỏi:

  1. là hiểu biết của tôi đúng khi cho rằng tất cả các thiết bị Android theo mặc định có một chương trình sqlite/giao diện để tạo cơ sở dữ liệu SQLite?
  2. Thực hiện cả hai chức năng cơ sở dữ liệu ở trên đều gọi tạo cơ sở dữ liệu sqlite trong thiết bị?
  3. Nếu câu trả lời ở trên là không thì loại Cơ sở dữ liệu nào thực hiện cả hai chức năng ở trên tạo?
  4. Nếu câu trả lời là , thì là window.sqlite.openDatabase() hàm bao bọc xung quanh window.openDatabase()?
  5. Các cơ sở dữ liệu được tạo bởi cuộc gọi có liên tục không? Tức là, dữ liệu có sẵn sau khi đóng và mở lại các ứng dụng đóng gói cordova không?
  6. Có kích thước cơ sở dữ liệu tối đa có thể được tạo bởi hai phương pháp trên không?

Trả lời

8
  1. WebSQL (window.openDatabase) là một tiêu chuẩn web không dùng nữa. Nhưng nó có sẵn trong hầu hết các trình duyệt trên máy tính để bàn và thiết bị di động. Hầu hết các trình duyệt đều triển khai đặc tả sử dụng SQLite. Trong Android, các trình duyệt và WebView hỗ trợ WebSQL, cùng với bộ nhớ cục bộ và bộ nhớ phiên từ các phiên bản đầu tiên và cũng có cả IndexedDB từ KitKat.

Sau đó, chúng tôi có Android độc lập hỗ trợ SQLite được sử dụng từ Java API như một trong những cơ chế duy trì chính của nó.

Cordova là đặc biệt. Ứng dụng chạy trong WebView do đó cần sử dụng WebSQL, nhưng trong Android, plugin ghi đè API và cấy ghép vào đối tượng cửa sổ các chức năng mới có thể mặc định cho triển khai khác, thay vì API trình duyệt.

Vì vậy, trong ứng dụng Cordova, khi nó được tải, khi bạn gọi openDatabase bạn đang thực sự gọi một chức năng mới mà Cordova đã đặt trong đối tượng cửa sổ ghi đè lên tiêu chuẩn cũ. Từ số Cordova docs:

Một số thiết bị đã cung cấp việc triển khai thông số này. Đối với những thiết bị này, sự hỗ trợ tích hợp được sử dụng thay vì thay thế nó bằng cách thực hiện của Cordova. Đối với các thiết bị không có hỗ trợ bộ nhớ, việc triển khai của Cordova phải tương thích với đặc tả W3C.

Trích dẫn đó không rõ ràng và không còn trong tài liệu nữa. Đối với "built-in", chúng có nghĩa là hỗ trợ WebSQL tích hợp trong WebView. Các tài liệu tôi đã liên kết cũ, từ phiên bản 2.x. Trong các phiên bản này, Cordova chỉ mặc định thực hiện tùy chỉnh nếu WebView không hỗ trợ WebSQL (tôi nghĩ điều này không bao giờ xảy ra) hoặc nếu thiết bị bị ảnh hưởng bởi bug 16175. Việc triển khai mặc định bao gồm việc sử dụng plugin Storage.java đã sử dụng API Java để tạo cơ sở dữ liệu SQLite. Tôi đã đọc most recent sources và trên phiên bản mới hơn (3.x) họ dường như đang sử dụng WebSQLite luôn.

  1. Có cả tạo tệp DB nhưng đường dẫn đến tệp sẽ khác.Trong thực tế, bạn có thể mở cùng một DB từ mã JavaScript và mã Java trong ứng dụng của bạn.

  2. Cùng một loại DB. SQLite là một lớp C gốc quản lý cấu trúc tệp. Trên thực tế, bạn cũng có thể sử dụng API C gốc này từ một ứng dụng Android gốc.

  3. Cordova/Phonegap sử dụng SQLIte từ bộ phận hỗ trợ tích hợp nếu có (trong Android).

  4. Có, chúng ở đó.

  5. Có, có giới hạn. Kiểm tra here để biết thêm thông tin.

Các vấn đề liên quan