javascript - read - sqlite json
JavaScript sqlite (10)
Panorama de las soluciones javascript SQLite
En el navegador
Si desea acceder a una base de datos SQLite desde un navegador web, no tiene muchas soluciones.
sql.js
La biblioteca SQLite C ha sido portada a javascript usando emscripten . El puerto se inició con el nombre de sql.js
por Alon Zakai (que también es el autor de emscripten). Soy el actual mantenedor de esta biblioteca.
La API es como:
<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>
Web SQL
El W3C había comenzado a trabajar en una API nativa para ejecutar SQL dentro del navegador, llamado web sql . Un ejemplo de uso de esa 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")'');
});
Sin embargo, el proyecto ha sido abandonado . Por lo tanto, no es ampliamente compatible. Ver: http://caniuse.com/sql-storage
En nodo
Si escribe javascript en el lado del cliente, en el nodo, tiene un poco más de opciones. Ver: https://www.npmjs.org/search?q=sqlite .
node-sqlite3
Si tienes una cadena de herramientas de compilación, y no te importa tener que compilar tu aplicación para diferentes plataformas (o apuntar solo a una plataforma), te aconsejaría que uses node-sqlite3
. Es rápido (mucho más rápido que sql.js
), tiene una API completa y una buena documentación. Un ejemplo de API es el siguiente:
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
Si de nuevo. sql.js
se puede usar desde el nodo. Esta es la solución si quieres una aplicación javascript pura. Sin embargo, será más lento que la solución anterior.
Aquí hay un ejemplo de cómo usar sql.js
desde un nodo:
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);
Las mejores recomendaciones para acceder y manipular bases de datos sqlite desde JavaScript.
Bueno, si está trabajando con JavaScript del lado del cliente, creo que no tendrá suerte ... los navegadores tienden a guardar el entorno de JavaScript para que no tenga acceso a la máquina en ningún tipo de capacidad general, como acceder a una base de datos.
Si está hablando de una base de datos SQLite en el extremo del servidor al que se accede desde el extremo del cliente, puede configurar una solución AJAX que invoca un código del lado del servidor para acceder a ella.
Si está hablando de Rhino o de algún otro lado del servidor JavaScript, debe buscar en el acceso de la API del lenguaje host a SQLite (como el JDBC para Rhino).
Tal vez aclare su pregunta un poco más ...
En una Mac? Eche un vistazo a JSTalk de Gus Meuller, que aprovecha Scripting Bridge y JSCocoa de Patrick Geiller.
Gus habla específicamente sobre el soporte de Sqlite aquí: http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html ... funciona muy bien.
La biblioteca sql.js le permitirá llamar consultas SQL en el lado del cliente. con esa biblioteca, puede transmitir fácilmente toda la información entre el servidor y el cliente llamando a .open (datos) y .exportData (). esto es muy útil.
Además, HTML5 tiene capacidades de almacenamiento , pero como nuevo estándar de tecnología, no puede suponer que todos los clientes lo admitirán.
Lawnchair es una muy buena opción si no estás atascado con SQL, ya que ofrece un enfoque clave / valor fácil de usar. estas dos bibliotecas crean una solución completa para trabajar con la base de datos sql en el lado del cliente.
Otra buena biblioteca de almacenamiento es jstorage . se puede usar para conservar los datos de "sql.js" en el cliente. Es compatible con una gran variedad de navegadores (incluidos los navegadores móviles, e IE7 e IE7!), E incluso supera los bloqueos del navegador.
Puede realizarlo con XUL API en la pila mozilla firefox. Este tutorial al respecto: http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html
Si está buscando acceder a bases de datos SQLite en el navegador (es decir, desde el lado del cliente), necesitará que su navegador lo admita. Puedes hacerlo con SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/ que asume que el navegador está basado en Mozilla (es decir, con soporte de SQLite). Todavía deberá permitir el acceso a las bibliotecas subyacentes ( http://www.mozilla.org/projects/security/components/signed-scripts.html )
Si está buscando acceso en el servidor desde los programas de Javascript a las bases de datos SQLite, hay varias opciones: JSDB es una http://www.jsdb.org/ ; JSEXT otro http://jsext.sourceforge.net/ ; y jslibs otro http://code.google.com/p/jslibs/
- MV
Si está ejecutando scripts con privilegios en Windows (ya sea en una HTA o WSH), puede acceder a las fuentes de datos ODBC utilizando un ActiveXObject "ADODB.Recordset".
Si está hablando del lado del cliente en una página web, la publicación anterior es: Google Gears es su mejor opción.
Google Gears tiene una base de datos sqlite integrada, pero deberá asegurarse de que la gente la tenga instalada si piensa confiar en ella.
Dependiendo de sus circunstancias, es posible que pueda exigir la instalación; de lo contrario, debería tratarlo como una buena idea, pero debe degradarse con elegancia para que el sitio siga funcionando si no está instalado.
JayData también proporciona un conjunto de herramientas para trabajar con sqLite / webSql usando JavaScript. Sin embargo, necesitará un navegador, Rhine o Nodejs para ejecutarlo.
Hay un proyecto llamado sql.js
que es un puerto de SQLite en JavaScript.
sql.js es un puerto de SQLite a JavaScript compilando el código SQLite C con Emscripten.