JavaScriptからSQLiteデータベースにアクセスすることは可能ですか?


97

file://スキームを使用してブラウザからアクセスしたいHTMLファイルとSQLiteデータベースのセットがあります。JavaScriptを使用してデータベースにアクセスし、クエリ(およびテーブル)を作成することは可能ですか?


3
file:スキームあなたはコンピュータに意味ですかブラウザが上で実行されていますか?

3
はい。現在、レポートを作成するツール(一連の画像、htmlファイル、およびsqliteデータベース)があります。このレポートをローカルで開くだけです(つまり、$ google-chrome report_out / index.html)。これをよりインタラクティブにしたいので、javascriptはデータベースから生成されたデータを読み取り、そこから統計を作成します。
Pal Szasz 2012年

WebSocketプロキシを介して接続することは可能だと思いますが、セットアップにはかなりの作業が必要です
hanshenrik 2015年

回答:


41

実際、答えはイエスです。これを行う方法の例を次に示します。http//html5doctor.com/introducing-web-sql-databases/

悪い点は、ブラウザによるサポートが非常に限られていることです。

詳細はこちらHTML5IndexedDB、Web SQLデータベース、ブラウザ戦争

PS:@Christophが言ったように、Web SQLはもはやアクティブなメンテナンスではなく、Webアプリケーションワーキンググループはそれ以上メンテナンスするつもりはないので、 https://developer.mozilla.org/en-US/docs/IndexedDBを参照してください

SQL.js

編集

@clentfortが言ったように、あなたが使用して、クライアント側のJavaScriptでのSQLiteデータベースにアクセスすることができSQL.jsを


15
参考までにwebsqlは廃止されました...代わりにindexedDBをプロモートしてください
クリストフ

2
しかし、既存のデータベースに接続することは可能ですか?すでにたくさんのデータがあり、JavaScriptで処理したいと思います。
Pal Szasz 2012年

サーバーサイドのものを使用するか、このコードで
Mrug

40

JavaScriptにコンパイルされたSQLlitelibであるSQL.jsを使用して、HTML5で導入されたローカルストレージにデータベースを保存できます。


9
ローカルストレージは非常に遅くて不器用です...代わりにindexedDBを使用する必要があります。それにもかかわらず、これは私が推測する実用的な解決策です。
クリストフ

2
localstorageはindexedDBほど優れていませんが、ほとんどすべての場所でサポートされています。SQL.jsはlocalstorageを直接使用しない(メモリ内にある)ため、起動/シャットダウン時にlocalstorageからの読み取り/書き込みを行うだけで、SQL.jsの状態をサーバーに保存することもできます。ユーザーに変更を具体的に保存してもらいたい場合は良いですが、ユーザーが保存せずに離れると問題が発生する可能性がある場合は悪いです。
パーキンス

20

最新の回答

sql.jsの私のフォークは、krikenのリポジトリで元のバージョンにマージされまし

優れたドキュメントは、元のレポでも使用可能です。

元の回答(古い)

新しいバージョンのsql.jsを使用する必要があります。これはsqlite3.8の移植版であり、優れたドキュメントがあり、(私が)積極的に保守しています。プリペアドステートメントとBLOBデータ型をサポートします。


サーバー側にあるSQLiteデータベースにアクセス(挿入、更新、読み取り)するためにsql.jsを使用できますか?
Abhee 2017

@lovasoa sql.jsを使用している場合、新しいコンピューターでサイトを実行し、インストールを行わずにデータベース(HTMLフォルダーと同じパスに格納されているdb)に対してCRUDを実行できますか?
JeafGilbert19年

1
@JeafGilbertいいえ。sql.jsはメモリ内で排他的に動作し、何も永続化されません。ファイルシステムにデータベースファイルを書き込みたい場合は、そのロジックを自分で作成する必要があります。
lovasoa

4

の最も興味深い機能の1つは、HTML5データをローカルに保存し、アプリケーションをオフラインで実行できるようにする機能です。これらの機能を処理する3つの異なるAPIがあり、いずれかを選択するかどうかは、ローカルに保存する予定のデータをどのように処理するかによって異なります。

  1. Webストレージ:キーと値のペアを持つ基本的なローカルストレージ用
  2. オフラインストレージ:マニフェストを使用して、オフラインで使用するためにファイル全体をキャッシュします
  3. Webデータベース:リレーショナルデータベースストレージ用

詳細については、HTML5ストレージAPIの紹介を参照してください。

そして使い方

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


5
ふふ、あなたの答えの2番目の改訂版を見てください、そこであなたはそれを読むことができます;)
クリストフ

1

PouchDBのようなものを使用するのはどうですか?http://pouchdb.com/


ご覧のとおり、質問の作成者はsqlite DBを持っており、SQLITEを変換するための例とスクリプトを提供していません=> POUCHDB
maxkoryukov

-2

IMHO、最良の方法は、AJAXを介してPOSTを使用してPythonを呼び出し、Python内のDBで必要なすべてのことを実行してから、結果をjavascriptに返すことです。Pythonでのjsonとsqliteのサポートは素晴らしく、Pythonの少し最近のバージョンでも100%組み込まれているため、「これをインストールして、それをインストールする」という苦痛はありません。Pythonの場合:

import sqlite3
import json

...必要なのはそれだけです。これはすべてのPythonディストリビューションの一部です。

@Sedrick Jeffersonが例を求めたので、(やや遅れて)JavascriptとPythonの間でスタンドアロンのやり取りをここに記述しました


2
質問には「...ブラウザからアクセスしたい...」が含まれています。したがって、あなたの答え(とpython)は領域外です(少なくとも今日、ブラウザからpythonを実行するのはそれほど簡単ではありません)
maxkoryukov
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.