Pergunta

Melhores recomendações para acesso e manipulação de bancos de dados sqlite a partir de JavaScript.

Foi útil?

Solução

Bem, se você estiver trabalhando em JavaScript do lado do cliente, acho que não terá sorte...os navegadores tendem a criar uma área restrita do ambiente JavaScript para que você não tenha acesso à máquina em qualquer tipo de capacidade geral, como acessar um banco de dados.

Se você está falando sobre um banco de dados SQLite no servidor acessado pelo cliente, você pode configurar uma solução AJAX que invoca algum código do lado do servidor para acessá-lo.

Se você está falando sobre o Rhino ou algum outro JavaScript do lado do servidor, você deve examinar o acesso à API da linguagem host no SQLite (como o JDBC para o Rhino).

Talvez esclareça um pouco mais sua dúvida...?

Outras dicas

Existe um projeto chamado sql.js que é uma porta do SQLite em JavaScript.

sql.js é uma porta de SQLite para JavaScript, compilando o código SQLite C com Emscripten.

Panorama das soluções javascript SQLite

No navegador

Se você deseja acessar um banco de dados SQLite de dentro de um navegador web, você não tem muitas soluções.

sql.js

A biblioteca SQLite C foi portado para javascript usando escrito.O porto foi iniciado com o nome de sql.js por Alon Zakai (que também é autor de emscripten).Eu sou o atual mantenedor desta biblioteca.

A API é assim:

<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 da Web

O W3C começou a trabalhar em uma API nativa para execução de SQL dentro do navegador, chamada websql.Um exemplo de uso dessa 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")');
});

Contudo, o projeto foi abandonado.Portanto, não é amplamente suportado.Ver: http://caniuse.com/sql-storage

No nó

Se você escrever javascript do lado do cliente, no nó, terá um pouco mais de opções.Ver: https://www.npmjs.org/search?q=sqlite .

nó-sqlite3

Se você possui um conjunto de ferramentas de compilação e não se importa em ter que compilar seu aplicativo para plataformas diferentes (ou direcionar apenas uma plataforma), aconselho que você use node-sqlite3.É rápido (muito mais rápido que sql.js), possui uma API completa e uma boa documentação.Um exemplo da API é o seguinte:

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

Sim novamente. sql.js pode ser usado a partir do nó.Esta é a solução se você deseja um aplicativo javascript puro.No entanto, será mais lento que a solução anterior.

Aqui está um exemplo de como usar sql.js do nó:

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 Engrenagens possui um banco de dados sqlite integrado - mas você precisará garantir que as pessoas o tenham instalado se planeja confiar nele.

Dependendo das circunstâncias, você poderá impor a instalação; caso contrário, deverá tratá-la como algo interessante, mas com uma degradação adequada para que o site ainda funcione se não estiver instalado.

Se você deseja acessar bancos de dados SQLite no navegador (ou seja,lado do cliente), você precisará do seu navegador para suportá-lo.Você pode fazer isso com SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/ que assume que o navegador é baseado em Mozilla (ou seja,com suporte SQLite).Você ainda precisará permitir o acesso às bibliotecas subjacentes ( http://www.mozilla.org/projects/security/components/signed-scripts.html )

Se você está procurando acesso do servidor de programas Javascript a bancos de dados SQLite, há várias opções:JSDB é um http://www.jsdb.org/ ;JSEXT outro http://jsext.sourceforge.net/ ;e jslibs outro http://code.google.com/p/jslibs/

- VM

O sql.js biblioteca permitirá que você chame consultas SQL no lado do cliente.com essa biblioteca, você pode transmitir facilmente todos os dados entre o servidor e o cliente chamando .open(data) e .exportData().isso é muito útil.

além disso, o HTML5 tem capacidades de armazenamento, mas como novo padrão de tecnologia, você não pode presumir que todos os clientes suportarão isso.

Cadeira de jardim é uma opção muito boa se você não estiver preso ao SQL, pois oferece uma abordagem chave/valor fácil de usar.essas duas bibliotecas são uma solução completa para trabalhar com banco de dados SQL no lado do cliente.

Outra boa biblioteca de armazenamento é armazenamento.ele pode ser usado para conservar os dados do "sql.js" no cliente.Ele oferece suporte a uma grande variedade de navegadores (incluindo navegadores móveis e IE7 e IE7!) E até sobrevive a falhas de navegador.

Se você estiver executando scripts privilegiados no Windows (em um HTA ou WSH), poderá acessar fontes de dados ODBC usando um ActiveXObject "ADODB.Recordset".

Se você está falando sobre o lado do cliente em uma página da web, a postagem acima é:O Google Gears é sua melhor aposta.

Você pode executá-lo com a API XUL na pilha do Mozilla Firefox.Este é um tutorial sobre isso:http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html

Em um Mac?Dê uma olhada no JSTalk de Gus Meuller, que utiliza o Scripting Bridge e o JSCocoa de Patrick Geiller.

Gus fala especificamente sobre o suporte ao SQLite aqui: http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html ...funciona bem.

JayData também fornece um kit de ferramentas para trabalhar com sqLite/webSql usando JavaScript.Você precisará de um navegador, Rhine ou Nodejs para executar a coisa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top