it-swarm-pt.tech

Sqlite JavaScript

Melhores recomendações para acessar e manipular bancos de dados sqlite de JavaScript.

44
benphane

Bem, se você está trabalhando em JavaScript do lado do cliente, acho que você estará sem sorte ... navegadores tendem a proteger o 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ê estiver falando sobre um banco de dados SQLite no lado do servidor acessado do lado do 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 do idioma do Host no SQLite (como o JDBC for Rhino).

Talvez esclarecer sua pergunta um pouco mais ...?

11
Mike Stone

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

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

26
Juicy Scripter

Panorama de soluções SQLite javascript

No navegador

Se você quiser acessar um banco de dados SQLite de dentro de um navegador da Web, não terá muitas soluções.

sql.js

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

A API é 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

O W3C começou a trabalhar em uma API nativa para executar o SQL dentro do navegador, chamado web sql. 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")');
});

No entanto, o projeto foi abandonado. Assim, não é amplamente suportado. Veja: http://caniuse.com/sql-storage

No nó

Se você escreve o javascript do lado do cliente, no nó, você tem um pouco mais de opções. Veja: https://www.npmjs.org/search?q=sqlite .

node-sqlite3

Se você tiver uma cadeia de ferramentas de compilação e não puder se preocupar em ter que compilar seu aplicativo para plataformas diferentes (ou segmentar apenas uma plataforma), eu aconselho que você use node-sqlite3 . É rápido (muito mais rápido que sql.js), tem 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ê quiser 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);
17
lovasoa

O Google Gears tem um banco de dados sqlite integrado - mas você precisa garantir que as pessoas o instalem se você planeja confiar nele.

Dependendo de suas circunstâncias, você poderá impor a instalação, caso contrário você deve tratá-la como algo agradável, mas com uma degradação elegante, de modo que o site ainda funcione se não estiver instalado.

11
Cebjyre

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

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

- MV

10
user7878

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

além disso, o HTML5 possui recursos de storage , mas, como novo padrão de tecnologia, você não pode presumir que todos os clientes oferecerão suporte a isso.

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

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

3
d.popov

Você pode executá-lo com a API XUL no mozilla firefox stack. Este tutorial sobre isso: http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html

2
Brain90

Se você estiver executando scripts privilegiados no Windows (em um HTA ou WSH), poderá acessar as 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 re: Google Gears é sua melhor aposta.

2
Joel Anair

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 do Sqlite aqui: http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html ... funciona muito bem.

0
jcburns

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.

0
Peter Aron Zentai