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, чтобы запустить эту вещь.