2011-10-20 23 views
7

Có thể sử dụng cơ sở dữ liệu Sqlite trong ứng dụng javascript windows 8 (winRT) không?Tôi có thể sử dụng Sqlite trong ứng dụng WinRT (javascript) không?

Điều tôi muốn đạt được là tải xuống cơ sở dữ liệu Sqlite và lưu trữ bộ nhớ này trong bộ nhớ cục bộ trước khi sử dụng. Tôi tin rằng một số hình thức lưu trữ cục bộ có sẵn cho các ứng dụng WinRT dựa trên javascript, nhưng tôi muốn biết liệu Sqlite có thể sử dụng được trong kịch bản này hay không.

Tôi cũng biết rằng việc triển khai .Net của Sqlite sử dụng một số cuộc gọi win32 và tôi tin rằng những điều này sẽ không được cho phép bởi quá trình cerififcation của windows8.

Trả lời

8

JavaScript có HTML5 IndexedDB có sẵn cho nó ra khỏi hộp.

Đối với SQLite, bạn có thể sử dụng nó, miễn là trước tiên bạn quấn nó như một thành phần WinRT có thể được sử dụng từ JavaScript, ví dụ: sử dụng C++/CX. Bề mặt API của nó không phải là lớn, vì vậy nó chắc chắn có thể. Tôi đã thử nghiệm với biên dịch SQLite cho Metro một thời gian trước đây, và chỉ có một vài cuộc gọi API Win32 không có sẵn trong vùng chứa ứng dụng và phải được thay thế - không có gì lớn.

2
+2

Đây là một wrapper WinRT, điều này không làm thay đổi thực tế rằng SQLite vẫn sử dụng cuộc gọi win32 mà không được phép vào tàu điện ngầm – sarvesh

+0

@iaimtomisbehave tôi không chắc chắn bạn là chính xác Xem bài viết này http..: //visualstudiomagazine.com/articles/2013/02/27/build-a-windows-store-app-using-sqlite.aspx cho biết rằng bạn có thể sử dụng sqlite trong một cửa sổ ứng dụng cửa hàng, và điều này là đến thẳng từ MSFT. – satur9nine

+0

@ satur9nine rằng thư viện cụ thể đó là cho đến khi chỉ là một wrapper. Khi tôi làm cho rằng bình luận sqlite chính nó không phải là winrt tương thích nhưng kể từ đó sqlite đã thêm hỗ trợ cho nó. – sarvesh

5

Chúng tôi tạo ra SQLite3-WinRT cho việc này. Nó là một trình bao bọc thành phần WinRT cho SQLite chuyển chứng nhận ứng dụng kiểu tàu điện ngầm Windows. Nó cũng bao gồm một trừu tượng JavaScript dễ sử dụng.

1

Có, cơ sở dữ liệu SQLite hiện được hỗ trợ trong Windows 8 RTM. Bây giờ bạn có thể tải xuống mọi thứ (Windows 8, công cụ, mẫu) từ Windows Dev Center.

1

Có Bạn có thể sử dụng SQLite trong máy WinRT. Chỉ cần thực hiện theo các bước sau

  1. Tạo một dự án mới.
  2. Chuyển đến tài liệu tham khảo, sau đó nhấp chuột phải vào tài liệu tham khảo ở đó bạn sẽ nhận được Quản lý NuPackage Nhấp vào đó.
  3. Trong tìm kiếm trực tuyến cho gói Sqlite-net, hãy cài đặt gói đó.
  4. Một lần nữa nhấp chuột phải vào Tài liệu tham khảo và nhấp vào thêm điều chỉnh, trong phần Mở rộng, bạn sẽ nhận được hai tham chiếu không được kiểm tra MS visual C++ thời gian chạy và thời gian chạy Windows Sqlite. kiểm tra cả tham chiếu và thêm tham chiếu. Nó sẽ có hai tệp CS trong trình khám phá giải pháp của bạn.
  5. Bây giờ Tải xuống tệp Zip từ https://github.com/doo/SQLite3-WinRT Nó sẽ cung cấp cho bạn thứ bao bọc để sử dụng tệp cs trong dự án của bạn.
  6. Giải nén tại bất kỳ vị trí nào.
  7. Bây giờ trong dự án, hãy truy cập FILE-> ADD-> Dự án hiện tại-> và duyệt vị trí giải nén của bạn. Ở đó bạn sẽ nhận được một tệp SQLite3Component.vcxproj bên trong SQLite3Component. Thêm tệp đó.
  8. Trình bao bọc bây giờ được bao gồm trong dự án của bạn.
  9. Bây giờ trong các tệp đã giải nén của bạn, bạn sẽ nhận được thư mục SQLite3JS sao chép thư mục đó và dán vào trình khám phá giải pháp của bạn.
  10. Bây giờ bạn đã sẵn sàng sử dụng sqlite trong dự án của mình.
  11. Hãy thử xây dựng dự án của bạn, nó sẽ hiển thị hai lỗi rằng tệp winres.h không có ở đó. Đối với điều đó đi đến vị trí lỗi đổi tên nó winresrc.h và xây dựng lại nó. Bây giờ nó sẽ xây dựng và bạn có thể sử dụng sqlite trong dự án của bạn.
    1. Để sử dụng.js file của SQLite3JS, Cung cấp tệp src của js như SQLite3JS \ js \ SQLite3.js trong trang html, nơi bạn sẽ sử dụng sqlite. Ở đây tôi đang cho bạn một số ví dụ để sử dụng sqlite trong js // Điều này sẽ tạo tên cơ sở dữ liệu db.sqlite và cố gắng tạo một bảng Tên Ghi chú. Nếu nó không có ở đó var dbPath = Windows.Storage.ApplicationData.current.localFolder.path + '\ db.sqlite'; SQLite3JS.openAsync (dbPath) . Sau đó (chức năng (db) { trả về db.runAsync ('TẠO TẠO BẢNG (id TEXT PRIMARY KEY, ghi chú TEXT)'); Tôi hy vọng tất cả các bước này sẽ giúp bạn.
+0

Xin chào .. Tôi đã thử các bước của bạn ở trên. Nhưng tôi nhận được một lỗi "compobj.dll là quá cũ cho ole2.dll khởi tạo". Bất kỳ ý tưởng làm thế nào để giải quyết điều này? – meetme

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