Pregunta

Las mejores recomendaciones para el acceso y manipulación de bases de datos sqlite desde JavaScript.

¿Fue útil?

Solución

Bueno, si usted está trabajando en el lado del cliente JavaScript, creo que va a estar fuera de suerte...los navegadores tienden a sandbox el entorno de JavaScript por lo que no tiene acceso a la máquina en cualquier tipo de capacidad general de como acceder a una base de datos.

Si usted está hablando acerca de una SQLite DB en el extremo del servidor acceder desde el cliente final, podría configurar una solución de AJAX que invoca a algún servidor de código para acceder a ella.

Si usted está hablando acerca de Rinoceronte o algunos otros de JavaScript del lado de servidor, usted debe mirar en la lengua de acogida de la API de acceso a SQLite (tales como el JDBC para Rhino).

Tal vez aclarar su pregunta un poco más...?

Otros consejos

Hay un proyecto llamado sql.js que es un puerto de SQLite en JavaScript.

sql.js es un puerto de SQLite para JavaScript, mediante la compilación de los SQLite código C con Emscripten.

Panorama de javascript SQLite soluciones

En el navegador

Si desea acceder a una base de datos SQLite desde el interior de un navegador web, usted no tiene muchas soluciones.

sql.js

El SQLite biblioteca de C ha sido portado a javascript el uso de emscripten.El puerto se inició bajo el nombre de sql.js por Alon Zakai (que es también el autor de emscripten).Yo soy el responsable actual de esta biblioteca.

La API va 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 empezado a trabajar en una API nativa para la ejecución de SQL dentro del navegador, llamado web sql.Un ejemplo de uso de la 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 apoyado.Ver: http://caniuse.com/sql-storage

En el nodo

Si usted escribe javascript del lado cliente, en el nodo, tiene un poco más de opciones.Ver: https://www.npmjs.org/search?q=sqlite .

nodo-sqlite3

Si tienes una recopilación de las herramientas, y puede no preocuparse de tener que compilar la aplicación para diferentes plataformas (o identifique como destino una sola plataforma), yo le aconsejo que utilice 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 la API es como sigue:

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

Sí, de nuevo. sql.js puede ser utilizado desde el nodo.Esta es la solución si quieres un puro javascript de la aplicación.Sin embargo, será más lenta que la anterior solución.

Aquí está un ejemplo de cómo utilizar sql.js de 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);

Google Gears se ha construido una base de datos sqlite - pero usted necesita para asegurarse de que la gente lo tiene instalado si usted planea confiar en él.

Dependiendo de sus circunstancias, usted puede ser capaz de hacer cumplir la instalación, de lo contrario, se debe tratar como un capricho, pero tienen la degradación de modo que el sitio todavía funciona si no está instalado.

Si usted está mirando para tener acceso a bases de datos SQLite en el navegador (ie.lado del cliente) tendrá a su navegador que lo soporte.Usted puede hacerlo con SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/ que se supone que el navegador es Mozilla base (es decir.con SQLite apoyo).Usted todavía necesita para permitir el acceso a las bibliotecas de base ( http://www.mozilla.org/projects/security/components/signed-scripts.html )

Si usted está buscando para serverside el acceso de los programas de Javascript para bases de datos SQLite hay varias opciones:JSDB es uno http://www.jsdb.org/ ;JSEXT otro http://jsext.sourceforge.net/ ;y jslibs otro http://code.google.com/p/jslibs/

-- MV

El sql.js la biblioteca le permitirá llamar a consultas SQL en el lado del cliente.con que libray, usted puede fácilmente transmitir los datos entre el servidor y el cliente llamando .open () y datos .exportData().esto es muy práctico.

además HTML5 ha las capacidades de almacenamiento, pero como la nueva tecnología estándar, usted no puede asumir que todos los clientes de soporte.

Silla de jardín es muy buena opción si usted no está atrapado con SQL, ya que proporciona un fácil de usar clave/valor del enfoque.estas dos bibliotecas de hacer una solución completa para trabajar con base de datos sql en el lado del cliente.

Otro buen almacenamiento de la biblioteca es jstorage.puede ser utilizado para conservar los datos de la "sql.js" en el cliente.Es compatible con una gran variedad de navegadores (incluyendo los navegadores de móviles, y IE7 y IE7 !), y aún sobrevive el navegador se bloquea.

Si usted está ejecutando el privilegio de secuencias de comandos en Windows (ya sea en una HTA o WSH), usted puede tener acceso a orígenes de datos ODBC mediante un "ADODB.Conjunto De Registros" ActiveXObject.

Si usted está hablando sobre el lado del cliente en una página web, el post anterior re:Google Gears es su mejor apuesta.

Se puede realizar con XUL API en mozilla firefox pila.A esto algún tutorial al respecto:http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html

En un Mac?Echa un vistazo a Gus Meuller del JSTalk, que aprovecha de secuencias de comandos de Puente y Patrick Geiller del JSCocoa.

Gus habla específicamente sobre el Sqlite apoyo aquí: http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html ...de las grandes obras.

JayData también proporciona un conjunto de herramientas para trabajar con sqLite/webSql el uso de JavaScript.Usted necesitará un navegador,el Rin, o Nodejs para ejecutar la cosa, aunque.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top