Можно ли получить доступ к базе данных SQLite из JavaScript?

60

У меня есть набор файлов HTML и база данных SQLite, с которой я хотел бы получить доступ из браузера, используя схему file://. Возможно ли получить доступ к базе данных и создать запросы (и таблицы) с помощью JavaScript?

  • 2
    По file: схема на компьютере, на котором работает браузер ?
  • 2
    Да. В настоящее время у меня есть инструмент, который создает отчет (куча изображений, HTML-файлы и база данных sqlite). Я могу просто открыть этот отчет локально (например, $ google-chrome report_out / index.html). Я хотел бы сделать это более интерактивным, чтобы javascript считывал сгенерированные данные из базы данных и создавал из них статистику.
Показать ещё 1 комментарий
Теги:
database

6 ответов

26
Лучший ответ

На самом деле ответ - да. Вот пример того, как вы можете это сделать: http://html5doctor.com/introducing-web-sql-databases/

Плохо то, что он с очень ограниченной поддержкой браузеров.

Дополнительная информация здесь HTML5 IndexedDB, веб-база данных SQL и браузеры

PS: Как сказал @Christoph Веб-SQL больше не находится в активном обслуживании, и Рабочая группа веб-приложений не намерена поддерживать его так что смотрите здесь https://developer.mozilla.org/en-US/docs/IndexedDB.


ИЗМЕНИТЬ

Как сказал @clentfort, вы можете получить доступ к базе данных SQLite с клиентским JavaScript с помощью SQL.js.

  • 14
    К вашему сведению, websql был заброшен ... Вместо этого продвигайте indexedDB .
  • 2
    Но возможно ли подключиться к уже существующей базе данных? У меня уже есть куча данных, которые я хотел бы обработать с помощью JavaScript.
Показать ещё 1 комментарий
25

Вы можете использовать SQL.js, который является компилятором SQLlite lib, скомпилированным для JavaScript и хранящим базу данных в локальном хранилище, представленном в HTML5.

  • 6
    локальное хранилище очень медленное и неуклюжее ... вместо этого вы должны использовать indexedDB. Тем не менее, это рабочее решение, я думаю.
  • 2
    Хотя localalstorage не так хорош, как indexedDB, он поддерживается практически везде. SQL.js не использует localstorage напрямую (он находится в памяти), поэтому вам нужно только читать / записывать в localstorage при запуске / завершении работы, вы даже можете сохранить состояние SQL.js на сервере. Хорошо, если вы хотите, чтобы пользователь специально сохранял изменения, плохо, если пользователь, оставивший без сохранения, может что-то сломать.
15

Актуальный ответ

Теперь моя версия sql.js была объединена с исходной версией на kriken repo.

хорошая документация также доступна на исходном репо.

Оригинальный ответ (устаревший)

Вы должны использовать более новую версию sql.js. Это порт sqlite 3.8, имеет хорошую документацию и активно поддерживается (мной). Он поддерживает подготовленные операторы и тип данных BLOB.

  • 0
    Могу ли я использовать sql.js для доступа (вставка, обновление, чтение) базы данных SQLite, которая находится на стороне сервера.
  • 0
    @lovasoa Если я использую sql.js, может ли новый компьютер запустить мой сайт и сделать CRUD для своей базы данных (БД хранится по тому же пути с папкой HTML) без каких-либо установок?
Показать ещё 1 комментарий
4

IMHO, лучший способ - вызвать Python с помощью POST через AJAX и сделать все, что вам нужно сделать с БД в Python, а затем вернуть результат в javascript. Поддержка json и sqlite в Python является потрясающей, и она на 100% встроена даже в несколько недавних версиях Python, поэтому нет "установить это, установить эту" боль. В Python:

import sqlite3
import json

... это все, что вам нужно. Это часть каждого дистрибутива Python.

@Седрик Джефферсон попросил примеры, поэтому (несколько сдержанно) я написал автономную обратную связь между Javascript и Python .

3

Одной из наиболее интересных функций в HTML5 является возможность локального хранения данных и разрешения запуска приложения в автономном режиме. Существует три разных API, которые работают с этими функциями, и выбор одного зависит от того, что именно вы хотите делать с данными, которые вы планируете хранить локально:

  • Веб-хранилище: для базового локального хранилища с парами ключ/значение.
  • Автономное хранилище: использует манифест для кэширования целых файлов для автономной работы использовать
  • Веб-база данных: для хранилища реляционных баз данных

Подробнее см. Знакомство с API-интерфейсами хранения HTML5

И как использовать

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

  • 0
    WebSQL! = Локальное хранилище
  • 0
    @ Кристоф никогда не говорил этого ....
Показать ещё 2 комментария
2

Как насчет использования чего-то вроде PouchDB? http://pouchdb.com/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню