it-swarm-ru.tech

JavaScript sqlite

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

44
benphane

Что ж, если вы работаете над клиентским JavaScript, я думаю, вам не повезет ... браузеры имеют тенденцию создавать изолированную среду JavaScript, поэтому у вас нет доступа к компьютеру в общем виде, например, доступ к базе данных.

Если вы говорите о БД SQLite на стороне сервера, к которой осуществляется доступ со стороны клиента, вы можете установить решение AJAX, которое вызывает некоторый код на стороне сервера для доступа к нему.

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

Возможно, уточнить ваш вопрос немного больше ...?

11
Mike Stone

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

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

26
Juicy Scripter

Панорама 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

В узле

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

узел-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 можно использовать с узла . Это решение, если вы хотите чисто JavaScript-приложение. Однако это будет медленнее, чем предыдущее решение.

Вот пример того, как использовать sql.js из узла:

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);
17
lovasoa

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

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

11
Cebjyre

Если вы ищете доступ к базам данных 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

10
user7878

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

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

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

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

3
d.popov

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

2
Brain90

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

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

2
Joel Anair

На Mac? Взгляните на JSTalk Гуса Мюллера, который использует Scripting Bridge и JSCocoa Патрика Гейллера.

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

0
jcburns

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

0
Peter Aron Zentai