it-swarm-es.tech

JavaScript sqlite

Las mejores recomendaciones para acceder y manipular bases de datos sqlite desde JavaScript.

44
benphane

Bueno, si está trabajando en JavaScript del lado del cliente, creo que no tendrá suerte ... los navegadores tienden a proteger 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 algún código del lado del servidor para acceder a ella.

Si está hablando de Rhino o algún otro JavaScript del lado del servidor, debe buscar en el acceso a la API del lenguaje Host en SQLite (como el JDBC para Rhino).

¿Quizás aclarar tu pregunta un poco más ...?

11
Mike Stone

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.

26
Juicy Scripter

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 (quien también es el autor de emscripten). Soy el responsable actual de esta biblioteca.

La API es así:

<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 web

El W3C había comenzado a trabajar en una API nativa para ejecutar SQL dentro del navegador, llamada 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 el nodo

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

node-sqlite3

Si tiene una cadena de herramientas de compilación y no le importa tener que compilar su aplicación para diferentes plataformas (u orientar solo una plataforma), le aconsejaría que use 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 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 del 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);
17
lovasoa

Google Gears tiene una base de datos sqlite incorporada, pero deberá asegurarse de que las personas la tengan instalada si planea confiar en ella.

Dependiendo de sus circunstancias, es posible que pueda exigir la instalación, de lo contrario, debe tratarlo como algo agradable, pero tener una degradación elegante para que el sitio aún funcione si no está instalado.

11
Cebjyre

Si está buscando acceder a bases de datos SQLite en el navegador (es decir, del lado del cliente), necesitará su navegador para admitirlo. Puede hacerlo con SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/ que supone que el navegador está basado en Mozilla (es decir, con soporte SQLite). Aún deberá permitir el acceso a las bibliotecas subyacentes ( http://www.mozilla.org/projects/security/components/signed-scripts.html )

Si está buscando el acceso del servidor desde programas Javascript a 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

10
user7878

La biblioteca sql.js le permitirá llamar consultas SQL en el lado del cliente. con esa biblioteca, puede transmitir fácilmente todos los datos entre el servidor y el cliente llamando a .open (data) y .exportData (). Esto es muy útil.

además HTML5 tiene capacidades de almacenamiento , pero como estándar de nueva tecnología, no puede asumir que todos los clientes lo admitirán.

Lawnchair es una muy buena opción si no está atascado con SQL, ya que ofrece un enfoque clave/valor fácil de usar. Estas dos bibliotecas son 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 sobrevive a los bloqueos del navegador.

3
d.popov

Puede realizarlo con XUL API en la pila de Mozilla Firefox. Este tutorial sobre esto: http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html

2
Brain90

Si está ejecutando scripts privilegiados en Windows (ya sea en una HTA o WSH), puede acceder a las fuentes de datos ODBC usando un ActiveXObject "ADODB.Recordset".

Si está hablando del lado del cliente en una página web, la publicación anterior re: Google Gears es su mejor opción.

2
Joel Anair

En una Mac? Eche un vistazo al JSTalk de Gus Meuller, que aprovecha el puente Scripting Bridge y el 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.

0
jcburns

JayData también proporciona un kit de herramientas para trabajar con sqLite/webSql usando JavaScript. Sin embargo, necesitará un navegador, Rhine o Nodejs para ejecutar la cosa.

0
Peter Aron Zentai