JavaScript sqlite [cerrado]


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

Author: benphane, 2008-09-15

10 answers

Bueno, si estás trabajando en JavaScript del lado del cliente, creo que no tendrás suerte... los navegadores tienden a sandbox el entorno JavaScript por lo que no tiene acceso a la máquina en cualquier tipo de capacidad general como el acceso 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, podría configurar una solución AJAX que invoque algún 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 a la API del lenguaje host en SQLite (como el JDBC para Rhino).

Quizás aclare su pregunta un poco más...?

 11
Author: Mike Stone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-15 07:54:33

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

Sql.js es un port de SQLite a JavaScript, compilando el código SQLite C con Emscripten.

 26
Author: Juicy Scripter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-19 22:55:38

Panorama de 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ó bajo el nombre de sql.js por Alon Zakai(quien también es el autor de emscripten). Soy el mantenedor 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 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 apoyado. Véase: http://caniuse.com/sql-storage

En el nodo

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

Nodo-sqlite3

Si tiene una cadena de herramientas de compilación, y no le importa tener que compilar su aplicación para diferentes plataformas (o dirigirse solo a 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

Sí, otra vez. sql.js se puede utilizar desde 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 el 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
Author: lovasoa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-06 15:18:47

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

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

 11
Author: Cebjyre,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-15 08:02:02

Si está buscando acceder a las bases de datos SQLite en el navegador (es decir. del lado del cliente) necesitará su navegador para soportarlo. Puedes hacerlo con SpiderApe http://spiderape.sourceforge.net/plugins/sqlite / que asume que el navegador está basado en Mozilla (ie. con soporte SQLite). Todavía tendrá que permitir el acceso a las bibliotecas subyacentes ( http://www.mozilla.org/projects/security/components/signed-scripts.html )

Si está buscando acceso al servidor desde Javascript programas a bases de datos SQLite hay varias opciones: JSDB is one http://www.jsdb.org / ; JSEXT another http://jsext.sourceforge.net / ; y jslibs otro http://code.google.com/p/jslibs /

M MV

 10
Author: user7878,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-15 14:51:10

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

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

Lawnchair es una muy buena opción si no está atascado con SQL, ya que da una enfoque clave/valor fácil de usar. estas dos bibliotecas son una solución completa para trabajar con bases de datos sql en el lado del cliente.

Otra buena biblioteca de almacenamiento es jstorage. se puede utilizar para conservar los datos de la " sql.js" en el cliente. Es compatible con una gran variedad de navegadores (incluidos los navegadores móviles, y IE7 y IE7 !), e incluso sobrevive a los bloqueos del navegador.

 3
Author: d.popov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-31 09:56:27

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

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

 2
Author: Joel Anair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-15 14:01:30

Se puede realizar con XUL API en mozilla firefox stack. Este es un tutorial sobre ello: http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html

 2
Author: Brain90,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-01 04:58:20

En un Mac? Echa un vistazo a JSTalk de Gus Meuller, que aprovecha Scripting Bridge y JSCocoa de Patrick Geiller.

Gus habla específicamente sobre el soporte Sqlite aquí: http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html ...funciona muy bien.

 0
Author: jcburns,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-01 07:38:49

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

 0
Author: Peter Aron Zentai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-15 06:23:51