Лучшие рекомендации по доступу и управлению базами данных sqlite из JavaScript.
Это старый пост, но я хотел добавить, что в настоящее время браузеры HTML5 имеют поддержку базы данных SQL через SQLite.
@Ken Liu - Совершенно верно! Это был смысл моего комментария ниже.
Возможный дубликат Можно ли получить доступ к базе данных SQLite из javascript?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Что ж, если вы работаете над клиентским JavaScript, я думаю, вам не повезет ... браузеры, как правило, помещают среду JavaScript в песочницу, поэтому у вас нет доступа к машине в каких-либо общих возможностях, таких как доступ к базе данных.
Если вы говорите о базе данных SQLite на стороне сервера, доступ к которой осуществляется со стороны клиента, вы можете настроить решение AJAX, которое вызывает некоторый код на стороне сервера для доступа к нему.
Если вы говорите о Rhino или каком-либо другом серверном JavaScript, вам следует изучить доступ API хост-языка к SQLite (например, JDBC для Rhino).
Возможно, уточнить ваш вопрос еще немного ...?
"Может быть, уточнить ваш вопрос еще немного ...?" Вы абсолютно правы - но тогда ваши всеобъемлющие ответы проясняют для меня как мое невежество, так и широту полного понимания. Спасибо.
Если бы я указал, что меня сначала интересуют данные sqlite Firefox 3.xx, я, возможно, не получил бы столь полезного подробного разъяснения.
Google Gears имеет встроенную базу данных sqlite, но вам нужно убедиться, что она установлена, если вы планируете на нее полагаться.
В зависимости от ваших обстоятельств вы можете принудительно установить установку, в противном случае вы должны относиться к ней как к полезной, но иметь постепенную деградацию, чтобы сайт продолжал работать, даже если он не установлен.
Если вы запускаете привилегированные сценарии в Windows (в HTA или WSH), вы можете получить доступ к источникам данных ODBC с помощью объекта ActiveXObject «ADODB.Recordset».
Если вы говорите о стороне клиента на веб-странице, лучше всего подойдет вышеуказанный пост re: Google Gears.
Если вы хотите получить доступ к базам данных 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/
- М.В.
Столько полезных ответов. Спасибо. После публикации здесь я нашел developer.mozilla.org/en/Storage. Я ценю, что вы помогли мне понять масштабы настоящего понимания.
На Mac? Взгляните на JSTalk Гаса Меллера, который использует Scripting Bridge и JSCocoa Патрика Гейлера.
Гас конкретно говорит о поддержке Sqlite здесь: http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html ... отлично работает.
Вы можете выполнить это с помощью XUL API в стеке Mozilla Firefox. Этот учебник об этом: http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html
JayData также предоставляет набор инструментов для работы с sqLite / webSql с использованием JavaScript. Однако для запуска вам понадобится браузер, Rhine или Nodejs.
Есть проект под названием sql.js, который является портом SQLite на JavaScript.
sql.js is a port of SQLite to JavaScript, by compiling the SQLite C code with Emscripten.
Привет, @Juicy Scripter, я хочу получить доступ к существующей базе данных sqlite из браузера IE (версия IE 7-10). не могли бы вы помочь мне в этом .. Я пробовал sql.js, но, похоже, он не поддерживает IE версии 7 и 8.
Библиотека sql.js позволит вам вызывать запросы SQL на стороне клиента. с помощью этой библиотеки вы можете легко передавать все данные между сервером и клиентом, вызывая .open (data) и .exportData (). это очень удобно.
вдобавок HTML5 имеет возможности хранения, но как новый технологический стандарт, вы не можете предполагать, что все клиенты будут его поддерживать.
Шезлонге - очень хороший вариант, если вы не зацикливаетесь на SQL, поскольку он дает простой в использовании подход ключ / значение. эти две библиотеки составляют полное решение для работы с базой данных sql на стороне клиента.
Еще одна хорошая библиотека хранения - jstorage. его можно использовать для сохранения данных из sql.js на клиенте. Он поддерживает большое количество браузеров (включая мобильные браузеры, IE7 и IE7!) И даже выдерживает сбои браузера.
Привет @ d.popov, я хочу получить доступ к существующей базе данных sqlite из браузера IE (версия IE 7-10). не могли бы вы помочь мне в этом .. Я пробовал sql.js, но, похоже, он не поддерживает IE версии 7 и 8.
вы пробовали jStorage? jstorage.info/#download
Если вы хотите получить доступ к базе данных SQLite из веб-браузера, у вас не так много решений.
Библиотека 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>
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.
Если у вас есть набор инструментов для компиляции, и вам не нужно компилировать приложение для разных платформ (или ориентироваться только на одну платформу), я бы посоветовал вам использовать 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.info(row.id + ": " + row.info);
});
});
db.close();
Да еще раз. 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);
Вероятно, вам следует указать, какую среду вы имели в виду. Единственная среда, которую я знаю, которая даже поддерживает взаимодействие JavaScript <-> Sqlite, - это Adobe AIR.