JavaScript sqlite

40

Лучшие рекомендации по доступу и обработке баз данных sqlite из JavaScript.

  • 0
    Вы, вероятно, должны указать, какую среду вы имели в виду. Единственная известная мне среда, которая поддерживает даже взаимодействие JavaScript <-> Sqlite, - это Adobe AIR.
  • 8
    Это старый пост, но я хотел добавить, что в настоящее время браузеры HTML5 поддерживают базы данных SQL через SQLite.
Показать ещё 2 комментария
Теги:

10 ответов

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

Хорошо, если вы работаете на JavaScript на стороне клиента, я думаю, вам будет не повезло... браузеры, как правило, изолируют среду JavaScript, поэтому у вас нет доступа к машине в любой общей емкости, такой как доступ базы данных.

Если вы говорите о базе данных SQLite на конечной стороне сервера, доступной с конца клиента, вы можете настроить решение AJAX, которое вызывает некоторый код на стороне сервера, чтобы получить к нему доступ.

Если вы говорите о Rhino или другом JavaScript на стороне сервера, вы должны изучить доступ к API-интерфейсу хоста в SQLite (например, JDBC для Rhino).

Возможно, уточните свой вопрос еще немного...?

  • 2
    "Может быть, уточнить ваш вопрос немного больше ...?" Вы абсолютно правы - но тогда ваши всеобъемлющие ответы проясняют для меня и мое невежество, и широту полного понимания. Спасибо.
  • 1
    Если бы я указал, что мой первоначальный интерес связан с данными Firefox 3.xx sqlite, я, возможно, не получил бы такого полезного широкого разъяснения.
24

Есть проект под названием sql.js, который является порталом SQLite в JavaScript.

sql.js - это порт SQLite для JavaScript, путем компиляции кода SQLite C с помощью Emscripten.

  • 0
    Привет @ Juicy Scripter, я хочу получить доступ к существующей базе данных sqlite из браузера IE (версия IE 7 -10). Можете ли вы помочь мне в этом .. я пробовал sql.js, но, похоже, он не поддерживает IE версии 7 и 8.
16

Панорама javascript-решений SQLite

В браузере

Если вы хотите получить доступ к базе данных SQLite из веб-браузера, у вас не так много решений.

sql.js

Библиотека SQLite C была портирована на javascript, используя emscripten. Порт был запущен под именем sql.js Алона Закаи (который также является автором emscripten). Я являюсь ведущим разработчиком этой библиотеки.

API выглядит следующим образом:

<script src='js/sql.js'></script>
<script>
    //Create the database
    var db = new SQL.Database();
    // Run a query without reading the results
    db.run("CREATE TABLE test (col1, col2);");
    // Insert two rows: (1,111) and (2,222)
    db.run("INSERT INTO test VALUES (?,?), (?,?)", [1,111,2,222]);

    // Prepare a statement
    var stmt = db.prepare("SELECT * FROM test WHERE a BETWEEN $start AND $end");
    stmt.getAsObject({$start:1, $end:1}); // {col1:1, col2:111}

    // Bind new values
    stmt.bind({$start:1, $end:2});
    while(stmt.step()) { //
        var row = stmt.getAsObject();
        // [...] do something with the row of result
    }
</script>

Веб-SQL

W3C начал работать над собственным API для выполнения SQL внутри браузера под названием web sql. Пример использования этого API:

var db = openDatabase('mydb', '1.0', 'my first database', 2 * 1024 * 1024);
db.transaction(function (tx) {
  tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id unique, text)');
  tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "synergies")');
});

Однако проект был оставлен. Таким образом, он не получил широкого распространения. См.: http://caniuse.com/sql-storage

В node

Если вы пишете javascript на стороне клиента, в node у вас есть немного больше вариантов. См. https://www.npmjs.org/search?q=sqlite.

node -sqlite3

Если у вас есть инструментальная цепочка для компиляции, и вам все равно, что вам нужно скомпилировать приложение для разных платформ (или настроить только одну платформу), я бы посоветовал вам использовать node-sqlite3. Он быстрый (намного быстрее, чем sql.js), имеет полный API и хорошую документацию. Пример API следующий:

var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(':memory:');

db.serialize(function() {
  db.run("CREATE TABLE lorem (info TEXT)");

  var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
  for (var i = 0; i < 10; i++) {
      stmt.run("Ipsum " + i);
  }
  stmt.finalize();

  db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {
      console.log(row.id + ": " + row.info);
  });
});

db.close();

sql.js

Да, снова. sql.js можно использовать из node. Это решение, если вы хотите использовать чисто javascript-приложение. Однако он будет медленнее предыдущего решения.

Вот пример использования sql.js из node:

var fs = require('fs');
var SQL = require('sql.js');
var filebuffer = fs.readFileSync('test.sqlite');

db.run("INSERT INTO test VALUES (?,?,?)", [1, 'hello', true]);  -- corrected INT to INTO


var data = db.export();
var buffer = new Buffer(data);
fs.writeFileSync("filename.sqlite", buffer);
11

Google Gears имеет встроенную базу данных sqlite, но вам нужно будет убедиться, что люди ее установили, если вы планируете полагаться на он.

В зависимости от ваших обстоятельств вы можете принудительно установить установку, иначе вы должны относиться к ней как к приятной, но иметь грациозную деградацию, чтобы сайт по-прежнему работал, если он не установлен.

10

Если вы ищете доступ к базам данных SQLite в браузере (то есть на стороне клиента), вам понадобится ваш браузер для его поддержки. Вы можете сделать это с помощью SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/, который предполагает, что браузер основан на Mozilla (т.е. С поддержкой SQLite). Вам все равно необходимо разрешить доступ к базовым библиотекам (http://www.mozilla.org/projects/security/components/signed-scripts.html)

Если вы ищете доступ к серверам из Javascript-программ в базы данных SQLite, существует несколько вариантов: JSDB - это один http://www.jsdb.org/; JSEXT другой http://jsext.sourceforge.net/; и jslibs другой http://code.google.com/p/jslibs/

- MV

  • 2
    Так много полезных ответов. Благодарю. После публикации здесь я нашел developer.mozilla.org/en/Storage . Я ценю, что вы помогаете мне понять суть настоящего понимания.
3

Библиотека sql.js позволит вам вызывать SQL-запросы на стороне клиента. с этим libray вы можете легко передавать все данные между сервером и клиентом, вызывая .open(data) и .exportData(). это очень удобно.

Кроме того, HTML5 имеет возможности хранения, но как новый стандарт технологии, вы не можете предположить, что все клиенты будут поддерживать это.

Lawnchair - очень хороший вариант, если вы не застряли в SQL, поскольку он дает простой в использовании подход "ключ/значение". эти две библиотеки составляют полное решение для работы с базой данных sql на стороне клиента.

Другая хорошая библиотека хранения jstorage. он может использоваться для сохранения данных из "sql.js" на клиенте. Он поддерживает большое количество браузеров (включая мобильные браузеры, IE7 и IE7!) И даже выживает при сбоях браузера.

  • 0
    Привет @ d.popov, я хочу получить доступ к существующей базе данных sqlite из браузера IE (версия IE 7 -10). Можете ли вы помочь мне в этом .. я пробовал sql.js, но, похоже, он не поддерживает IE версии 7 и 8.
  • 0
    ты пробовал jStorage? jstorage.info/#download
2

Вы можете выполнить его с помощью XUL API в стеке Mozilla Firefox. Это несколько урок об этом: http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html

2

Если вы используете привилегированные сценарии в Windows (либо в HTA, либо WSH), вы можете получить доступ к источникам данных ODBC с помощью ActiveXObject ADODB.Recordset.

Если вы говорите о стороне клиента на веб-странице, вышеуказанное сообщение re: Google Gears - ваш лучший выбор.

0

JayData также предоставляет инструментарий для работы с sqlite/webSql с использованием JavaScript. Вам понадобится браузер, Рейн или Nodejs, чтобы запустить эту вещь.

0

На Mac? Взгляните на Gus Meuller JSTalk, который использует Scripting Bridge и Patrick Geiller JSCocoa.

Гус говорит о поддержке Sqlite здесь: http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html... отлично работает.

Ещё вопросы

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