JavaScript sqlite [закрыто]

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

10 ответов


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

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

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

возможно, проясните свой вопрос немного больше...?


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

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


Панорама решений 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 внутри браузера, называемого веб-служб 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

если у вас есть компиляция toolchain, и не может заботиться о том, чтобы скомпилировать приложение для разных платформ (или целевой только одной платформы), я бы посоветовал вам использовать 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);

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

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


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

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

-- MV


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

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

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

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


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

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


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


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

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


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