É possível acessar um banco de dados SQLite de JavaScript?


92

Tenho um conjunto de arquivos HTML e um banco de dados SQLite, que gostaria de acessar do navegador, usando o esquema file: //. É possível acessar o banco de dados e criar consultas (e tabelas) usando JavaScript?


2
Por file:esquema, você quer dizer no computador em que o navegador está sendo executado?

2
Sim. Atualmente tenho uma ferramenta que cria um relatório (um monte de imagens, arquivos html e um banco de dados sqlite). Posso simplesmente abrir este relatório localmente (ou seja, $ google-chrome report_out / index.html). Eu gostaria de tornar isso mais interativo, para que o javascript pudesse ler os dados gerados no banco de dados e criar estatísticas a partir dele.
— Pal Szasz

Eu acredito que seria possível fazer uma conexão por meio de um proxy WebSocket, mas seria um pouco trabalhoso para configurar
— hanshenrik

Respostas:


39

Na verdade, a resposta é sim. Aqui está um exemplo de como você pode fazer isso: http://html5doctor.com/introducing-web-sql-databases/

O ruim é que ele tem suporte muito limitado pelos navegadores.

Mais informações aqui HTML5 IndexedDB, banco de dados Web SQL e guerras de navegador

PS: Como @Christoph disse que o Web SQL não está mais em manutenção ativa e o Grupo de Trabalho de Aplicativos da Web não pretende mantê-lo mais , veja aqui https://developer.mozilla.org/en-US/docs/IndexedDB .

SQL.js

EDITAR

Como @clentfort disse, você pode acessar banco de dados SQLite com client-side JavaScript usando SQL.js .


14
Para sua informação, o websql foi abandonado ... Promova indexedDB em seu lugar.
— Christoph

2
Mas é possível se conectar ao banco de dados já existente? Já tenho um monte de dados nele, que gostaria de processar com javascript.
— Pal Szasz

Você pode ir com algumas coisas do lado do servidor, ou tentar Node.JS para este codeforgeek.com/2014/07/node-sqlite-tutorial
— Mrug

38

Você pode usar o SQL.js, que é o lib SQLlite compilado para JavaScript e armazenar o banco de dados no armazenamento local introduzido no HTML5.


7
o armazenamento local é muito lento e desajeitado ... você deve usar indexedDB em seu lugar. No entanto, esta é uma solução funcional, eu acho.
— Christoph

2
Embora localstorage não seja tão bom quanto indexedDB, ele é compatível em quase todos os lugares. SQL.js não usa localstorage diretamente (está na memória), então você só precisa ler / gravar em localstorage na inicialização / desligamento, você pode até salvar o estado do SQL.js em um servidor. Bom se você deseja que o usuário salve especificamente as alterações, ruim se um usuário sair sem permitir que ele salve possa quebrar as coisas.
— Perkins de

20

Resposta atualizada

Meu fork do sql.js foi agora mesclado com a versão original, no repositório de Kriken .

A boa documentação também está disponível no repositório original.

Resposta original (desatualizada)

Você deve usar a versão mais recente do sql.js . É uma porta do sqlite 3.8, tem uma boa documentação e é mantida ativamente (por mim). Ele suporta instruções preparadas e tipo de dados BLOB.


Posso usar sql.js para acessar (inserir, atualizar, ler) banco de dados SQLite que está no lado do servidor.
— Abhee

@lovasoa Se eu usar sql.js, um computador novo pode executar meu site e fazer o CRUD em seu banco de dados (db armazenado no mesmo caminho da pasta HTML) sem fazer nenhuma instalação?
— Jeaf Gilbert

1
@JeafGilbert No. sql.js opera exclusivamente na memória, nada é persistido. Se você quiser gravar o arquivo de banco de dados em seu sistema de arquivos, terá que escrever essa lógica você mesmo.
— lovasoa

4

Um dos recursos mais interessantes do HTML5é a capacidade de armazenar dados localmente e permitir que o aplicativo seja executado offline. Existem três APIs diferentes que lidam com esses recursos e escolher uma depende do que exatamente você deseja fazer com os dados que pretende armazenar localmente:

  1. Armazenamento da Web: para armazenamento local básico com pares de chave / valor
  2. Armazenamento offline: usa um manifesto para armazenar arquivos inteiros em cache para uso offline
  3. Banco de dados da Web: para armazenamento de banco de dados relacional

Para obter mais referências, consulte Apresentando as APIs de armazenamento HTML5

E como usar

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


5
hehe, dê uma olhada na segunda revisão da sua resposta, lá você pode ler;)
— Christoph


-2

IMHO, a melhor maneira é chamar o Python usando POST via AJAX e fazer tudo o que você precisa fazer com o banco de dados dentro do Python, depois retornar o resultado para o javascript. O suporte a json e sqlite em Python é incrível e é 100% integrado, mesmo nas versões ligeiramente recentes do Python, então não há nenhuma dor de "instalar isso, instalar aquilo". Em Python:

import sqlite3
import json

... isso é tudo que você precisa. Faz parte de toda distribuição Python.

@Sedrick Jefferson pediu exemplos, então (um tanto tardiamente) eu escrevi um vaivém autônomo entre Javascript e Python aqui.


1
a pergunta contém "... que eu gostaria de acessar do navegador ..." . portanto, sua resposta (com python) está fora de questão (pelo menos hoje, quando não é tão fácil executar o Python em um navegador)
— maxkoryukov
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.