Is it possible to access an SQLite database from JavaScript?

JavascriptHtmlDatabaseSqlite

Javascript Problem Overview


I have a set of HTML files and a SQLite database, which I would like to access from the browser, using the file:// scheme. Is it possible to access the database and create queries (and tables) using JavaScript?

Javascript Solutions


Solution 1 - Javascript

Actually the answer is yes. Here is an example how you can do this: http://html5doctor.com/introducing-web-sql-databases/

The bad thing is that it's with very limited support by the browsers.

More information here https://stackoverflow.com/questions/3971813/html5-indexeddb-web-sql-database-and-browser-wars

PS: As @Christoph said Web SQL is no longer in active maintenance and the Web Applications Working Group does not intend to maintain it further so look here https://developer.mozilla.org/en-US/docs/IndexedDB.

SQL.js

EDIT

As @clentfort said, you can access SQLite database with client-side JavaScript by using SQL.js.

Solution 2 - Javascript

You could use SQL.js which is the SQLlite lib compiled to JavaScript and store the database in the local storage introduced in HTML5.

Solution 3 - Javascript

Up to date answer

My fork of sql.js has now be merged into the original version, on a dedicated repo.

The good documentation is also available on the original repo.

Original answer (outdated)

You should use the newer version of sql.js. It is a port of sqlite 3.8, has a good documentation and is actively maintained (by me). It supports prepared statements, and BLOB data type.

Solution 4 - Javascript

One of the most interesting features in HTML5 is the ability to store data locally and to allow the application to run offline. There are three different APIs that deal with these features and choosing one depends on what exactly you want to do with the data you're planning to store locally:

  1. Web storage: For basic local storage with key/value pairs
  2. Offline storage: Uses a manifest to cache entire files for offline use
  3. Web database: For relational database storage

For more reference see Introducing the HTML5 storage APIs

And how to use

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

Solution 5 - Javascript

What about using something like PouchDB? http://pouchdb.com/

Solution 6 - Javascript

IMHO, the best way is to call Python using POST via AJAX and do everything you need to do with the DB within Python, then return the result to the javascript. json and sqlite support in Python is awesome and it's 100% built-in within even slightly recent versions of Python, so there is no "install this, install that" pain. In Python:

import sqlite3
import json

...that's all you need. It's part of every Python distribution.

@Sedrick Jefferson asked for examples, so (somewhat tardily) I have written up a stand-alone back-and-forth between Javascript and Python here.

Solution 7 - Javascript

It is best to code with python and flask. If you use WebSQL with JavaScript then it will only save the data for individual windows and not worldwide, as it is a browser cookie. Flask is a python web server and once you make a page with it you can import sqlite3. Another way is to use php, but the main point is that using JavaScript is a bad idea.

P.S. Actually you can try using loaclStorage i heard it can save data for as long as you want it to be saved.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPal SzaszView Question on Stackoverflow
Solution 1 - JavascriptMinko GechevView Answer on Stackoverflow
Solution 2 - JavascriptclentfortView Answer on Stackoverflow
Solution 3 - JavascriptlovasoaView Answer on Stackoverflow
Solution 4 - JavascriptTalhaView Answer on Stackoverflow
Solution 5 - JavascripttheamoebaView Answer on Stackoverflow
Solution 6 - JavascriptfyngyrzView Answer on Stackoverflow
Solution 7 - JavascriptSuperman123View Answer on Stackoverflow