Có thể truy cập cơ sở dữ liệu SQLite từ JavaScript không?


97

Tôi có một tập hợp các tệp HTML và cơ sở dữ liệu SQLite, mà tôi muốn truy cập từ trình duyệt bằng cách sử dụng tệp: // Scheme. Có thể truy cập cơ sở dữ liệu và tạo truy vấn (và bảng) bằng JavaScript không?


3
Theo file:sơ đồ, bạn có nghĩa là trên máy tính đang chạy trình duyệt ?

3
Đúng. Hiện tại tôi có một công cụ tạo báo cáo (một loạt các hình ảnh, tệp html và cơ sở dữ liệu sqlite). Tôi chỉ cần mở báo cáo này cục bộ (tức là $ google-chrome report_out / index.html). Tôi muốn làm cho điều này tương tác hơn, vì vậy javascript sẽ đọc dữ liệu được tạo từ cơ sở dữ liệu và tạo thống kê từ đó.
Pal Szasz

tôi tin rằng nó sẽ có thể tạo ra một kết nối thông qua một proxy WebSocket, nhưng nó muốn mất khá nhiều công việc để thiết lập
hanshenrik

Câu trả lời:


41

Thực ra câu trả lời là có. Đây là một ví dụ về cách bạn có thể thực hiện việc này: http://html5doctor.com/introductioning-web-sql-databases/

Điều tồi tệ là nó được hỗ trợ rất hạn chế bởi các trình duyệt.

Thông tin thêm tại đây HTML5 IndexedDB, Cơ sở dữ liệu Web SQL và cuộc chiến trình duyệt

Tái bút: Như @Christoph đã nói Web SQL không còn được bảo trì tích cực và Nhóm công tác ứng dụng web không có ý định duy trì nó thêm, vì vậy hãy xem tại đây https://developer.mozilla.org/en-US/docs/IndexedDB .

SQL.js

BIÊN TẬP

Như @clentfort nói, bạn có thể truy cập vào cơ sở dữ liệu SQLite với client-side JavaScript bằng cách sử dụng SQL.js .


14
FYI websql đã bị bỏ ... Thay vào đó, hãy quảng cáo indexedDB .
Christoph

2
Nhưng liệu nó có thể kết nối với cơ sở dữ liệu đã có sẵn không? Tôi đã có một loạt dữ liệu trong đó, tôi muốn xử lý bằng javascript.
Pal Szasz

Bạn có thể đi với một số công cụ phía máy chủ, hoặc thử Node.js cho điều này codeforgeek.com/2014/07/node-sqlite-tutorial
Mrug

40

Bạn có thể sử dụng SQL.js là SQLlite lib được biên dịch sang JavaScript và lưu trữ cơ sở dữ liệu trong bộ lưu trữ cục bộ được giới thiệu trong HTML5.


9
lưu trữ cục bộ rất chậm và vụng về ... bạn nên sử dụng indexedDB thay thế. Tuy nhiên, đây là một giải pháp hiệu quả mà tôi đoán.
Christoph

2
Mặc dù localstorage không đẹp như indexedDB, nhưng nó được hỗ trợ khá nhiều ở mọi nơi. SQL.js không sử dụng localstorage trực tiếp (nó nằm trong bộ nhớ), vì vậy bạn chỉ phải đọc / ghi vào localstorage khi khởi động / tắt máy, thậm chí bạn có thể lưu trạng thái của SQL.js trên máy chủ. Tốt nếu bạn muốn người dùng đặc biệt lưu các thay đổi, xấu nếu người dùng rời đi mà không để lưu có thể làm hỏng mọi thứ.
Perkins

20

Câu trả lời cập nhật

Nĩa sql.js của tôi hiện đã được hợp nhất vào phiên bản gốc, trên repo của kriken .

Các tài liệu tốt cũng có sẵn trên các repo gốc.

Câu trả lời gốc (lỗi thời)

Bạn nên sử dụng phiên bản sql.js mới hơn . Nó là một cổng sqlite 3.8, có một tài liệu tốt và được duy trì tích cực (bởi tôi). Nó hỗ trợ các câu lệnh đã chuẩn bị và kiểu dữ liệu BLOB.


Tôi có thể sử dụng sql.js để truy cập (chèn, cập nhật, đọc) cơ sở dữ liệu SQLite ở phía máy chủ không.
Abhee

@lovasoa Nếu tôi sử dụng sql.js, một máy tính mới có thể chạy trang web của tôi và thực hiện CRUD vào cơ sở dữ liệu của nó (db được lưu trữ trong cùng một đường dẫn với thư mục HTML) mà không cần thực hiện bất kỳ cài đặt nào không?
Jeaf Gilbert

1
@JeafGilbert Số sql.js hoạt động độc quyền trong bộ nhớ, không có gì tồn tại. Nếu bạn muốn ghi tệp cơ sở dữ liệu trên hệ thống tệp của mình, bạn sẽ phải tự viết logic đó.
lovasoa

4

Một trong những tính năng thú vị nhất HTML5là khả năng lưu trữ dữ liệu cục bộ và cho phép ứng dụng chạy ngoại tuyến. Có ba API khác nhau xử lý các tính năng này và việc chọn một API phụ thuộc vào chính xác những gì bạn muốn làm với dữ liệu bạn định lưu trữ cục bộ:

  1. Lưu trữ web: Để lưu trữ cục bộ cơ bản với các cặp khóa / giá trị
  2. Lưu trữ ngoại tuyến: Sử dụng tệp kê khai để lưu vào bộ nhớ cache toàn bộ tệp để sử dụng ngoại tuyến
  3. Cơ sở dữ liệu web: Để lưu trữ cơ sở dữ liệu quan hệ

Để tham khảo thêm, hãy xem Giới thiệu API lưu trữ HTML5

Và cách sử dụng

http://cookbooks.adobe.com/post_Store_data_in_the_HTML5_SQLite_database-19115.html


5
hehe, hãy xem bản sửa đổi thứ hai cho câu trả lời của bạn, ở đó bạn có thể đọc nó;)
Christoph

1

Điều gì về việc sử dụng một cái gì đó như PouchDB? http://pouchdb.com/


như bạn có thể thấy tác giả của câu hỏi có DB sqlite và bạn chưa cung cấp các ví dụ và tập lệnh để chuyển đổi SQLITE => POUCHDB
maxkoryukov

-2

IMHO, cách tốt nhất là gọi Python bằng POST qua AJAX và làm mọi thứ bạn cần làm với DB trong Python, sau đó trả lại kết quả cho javascript. Hỗ trợ json và sqlite bằng Python thật tuyệt vời và nó được tích hợp 100% trong các phiên bản Python thậm chí hơi gần đây, vì vậy không có vấn đề "cài đặt cái này, cài đặt cái kia". Trong Python:

import sqlite3
import json

...Đó là tất cả những gì bạn cần. Nó là một phần của mọi bản phân phối Python.

@Sedrick Jefferson đã yêu cầu các ví dụ, vì vậy (hơi chậm chạp) Tôi đã viết ra một bài viết qua lại độc lập giữa Javascript và Python ở đây.


2
câu hỏi chứa "... mà tôi muốn truy cập từ trình duyệt ..." . vì vậy câu trả lời của bạn (với python) nằm ngoài khu vực (ít nhất là hiện nay, khi việc chạy python từ trình duyệt không dễ dàng như vậy)
maxkoryukov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.