Apakah mungkin untuk mengakses database SQLite dari JavaScript?

97

Saya memiliki satu set file HTML dan database SQLite, yang ingin saya akses dari browser, menggunakan file: // skema. Apakah mungkin untuk mengakses database dan membuat query (dan tabel) menggunakan JavaScript?

Pal Szasz
sumber
3
Yang file:Anda maksud dengan skema di komputer tempat browser sedang berjalan?
3
Iya. Saat ini saya memiliki alat yang membuat laporan (sekumpulan gambar, file html, dan database sqlite). Saya cukup membuka laporan ini secara lokal (yaitu $ google-chrome report_out / index.html). Saya ingin membuatnya lebih interaktif, sehingga javascript akan membaca data yang dihasilkan dari database dan membuat statistik darinya.
Pal Szasz
saya yakin akan mungkin untuk membuat koneksi melalui proxy WebSocket, tetapi perlu sedikit kerja keras untuk menyiapkannya
hanshenrik

Jawaban:

41

Sebenarnya jawabannya ya. Berikut adalah contoh bagaimana Anda dapat melakukan ini: http://html5doctor.com/introducing-web-sql-databases/

Hal yang buruk adalah bahwa itu dengan dukungan yang sangat terbatas oleh browser.

Informasi lebih lanjut di sini HTML5 IndexedDB, Database SQL Web dan perang browser

NB: Seperti yang dikatakan @Christoph, Web SQL tidak lagi dalam pemeliharaan aktif dan Kelompok Kerja Aplikasi Web tidak bermaksud untuk memeliharanya lebih lanjut, jadi lihat di sini https://developer.mozilla.org/en-US/docs/IndexedDB .

SQL.js

EDIT

Seperti @clentfort mengatakan, Anda dapat mengakses database SQLite dengan JavaScript sisi klien dengan menggunakan SQL.js .

Minko Gechev
sumber
15
FYI websql telah ditinggalkan ... Promosikan indexedDB sebagai gantinya.
Christoph
2
Tetapi apakah mungkin untuk terhubung ke database yang sudah ada? Saya sudah memiliki banyak data di dalamnya, yang ingin saya proses dengan javascript.
Pal Szasz
Anda dapat menggunakan beberapa hal server side, atau coba Node.JS untuk codeforgeek.com/2014/07/node-sqlite-tutorial
Mrug
40

Anda bisa menggunakan SQL.js yang merupakan lib SQLlite yang dikompilasi ke JavaScript dan menyimpan database di penyimpanan lokal yang diperkenalkan di HTML5.

clentfort
sumber
9
penyimpanan lokal sangat lambat dan kikuk ... Anda harus menggunakan indexedDB sebagai gantinya. Meskipun demikian ini adalah solusi yang saya kira.
Christoph
2
Meskipun penyimpanan lokal tidak sebaik indexedDB, itu didukung cukup banyak di mana-mana. SQL.js tidak menggunakan penyimpanan lokal secara langsung (ada di memori), jadi Anda hanya perlu membaca dari / menulis ke penyimpanan lokal saat startup / shutdown, Anda bahkan dapat menyimpan status SQL.js di server. Baik jika Anda ingin pengguna secara khusus menyimpan perubahan, buruk jika pengguna keluar tanpa membiarkannya menyimpan dapat merusak sesuatu.
Perkins
20

Jawaban terkini

Garpu sql.js saya sekarang telah digabungkan ke versi aslinya, di repo kriken .

The dokumentasi yang baik juga tersedia di repo asli.

Jawaban asli (ketinggalan jaman)

Anda harus menggunakan versi terbaru dari sql.js . Ini adalah port sqlite 3.8, memiliki dokumentasi yang baik dan secara aktif dipelihara (oleh saya). Ini mendukung pernyataan yang disiapkan, dan tipe data BLOB.

lovasoa
sumber
Dapatkah saya menggunakan sql.js untuk mengakses (menyisipkan, memperbarui, membaca) database SQLite yang ada di sisi server.
Abhee
@lovasoa Jika saya menggunakan sql.js, dapatkah komputer baru menjalankan situs saya dan melakukan CRUD ke database-nya (db disimpan di jalur yang sama dengan folder HTML) tanpa melakukan instalasi apa pun?
Jeaf Gilbert
1
@JeafGilbert No. sql.js beroperasi secara eksklusif dalam memori, tidak ada yang dipertahankan. Jika Anda ingin menulis file database pada sistem file Anda, Anda harus menulis logika itu sendiri.
lovasoa
4

Salah satu fitur yang paling menarik HTML5adalah kemampuan untuk menyimpan data secara lokal dan memungkinkan aplikasi untuk berjalan secara offline. Ada tiga API berbeda yang menangani fitur-fitur ini dan memilih satu tergantung pada apa yang sebenarnya ingin Anda lakukan dengan data yang Anda rencanakan untuk disimpan secara lokal:

  1. Penyimpanan web: Untuk penyimpanan lokal dasar dengan pasangan kunci / nilai
  2. Penyimpanan offline: Menggunakan manifes untuk menyimpan cache seluruh file untuk penggunaan offline
  3. Database web: Untuk penyimpanan database relasional

Untuk referensi lebih lanjut, lihat Memperkenalkan API penyimpanan HTML5

Dan bagaimana cara menggunakannya

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

Talha
sumber
5
hehe, lihat revisi kedua dari jawaban Anda, di sana Anda bisa membacanya;)
Christoph
1

Bagaimana dengan menggunakan sesuatu seperti PouchDB? http://pouchdb.com/

theamoeba
sumber
seperti yang Anda lihat, penulis pertanyaan memiliki DB sqlite , dan Anda belum memberikan contoh dan skrip untuk mengonversi SQLITE => POUCHDB
maxkoryukov
-2

IMHO, cara terbaik adalah memanggil Python menggunakan POST melalui AJAX dan melakukan semua yang perlu Anda lakukan dengan DB dalam Python, lalu mengembalikan hasilnya ke javascript. Dukungan json dan sqlite di Python luar biasa dan 100% built-in bahkan dalam versi Python yang sedikit terbaru, jadi tidak ada rasa sakit "instal ini, instal itu". Dengan Python:

import sqlite3
import json

... hanya itu yang Anda butuhkan. Itu bagian dari setiap distribusi Python.

@Sedrick Jefferson meminta contoh, jadi (agak terlambat) saya telah menulis bolak-balik yang berdiri sendiri antara Javascript dan Python di sini.

fyngyrz.dll
sumber
2
pertanyaannya berisi "... yang ingin saya akses dari browser ..." . jadi jawaban Anda (dengan python) berada di luar area (setidaknya hari ini, ketika tidak mudah menjalankan python dari browser)
maxkoryukov