Domanda

I migliori consigli per l'accesso e la manipolazione dei database SQLite da JavaScript.

È stato utile?

Soluzione

Bene, se stai lavorando su JavaScript lato client, penso che sarai sfortunato...i browser tendono a eseguire il sandboxing dell'ambiente JavaScript in modo da non avere accesso alla macchina in alcun tipo di capacità generale come l'accesso a un database.

Se stai parlando di un DB SQLite sul lato server a cui si accede dal lato client, potresti impostare una soluzione AJAX che richiama del codice lato server per accedervi.

Se stai parlando di Rhino o di qualche altro JavaScript lato server, dovresti esaminare l'accesso API del linguaggio host a SQLite (come JDBC per Rhino).

Magari chiarire un po' di più la tua domanda...?

Altri suggerimenti

C'è un progetto chiamato sql.js che è un port di SQLite in JavaScript.

sql.js è un port di SQLite su JavaScript, compilando il codice C SQLite con Emscripten.

Panorama delle soluzioni Javascript SQLite

Nel browser

Se desideri accedere a un database SQLite da un browser Web, non hai molte soluzioni.

sql.js

La libreria SQLite C è stata portato su Javascript utilizzando emscripten.Il porto è stato avviato sotto il nome di sql.js di Alon Zakai (che è anche l'autore di emscripten).Sono l'attuale manutentore di questa libreria.

L'API funziona così:

<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

Il W3C aveva iniziato a lavorare su un'API nativa per l'esecuzione di SQL all'interno del browser, chiamata web sql.Un esempio di utilizzo di tale 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")');
});

Tuttavia, il progetto è stato abbandonato.Pertanto non è ampiamente supportato.Vedere: http://caniuse.com/sql-storage

Nel nodo

Se scrivi javascript lato client, in node, hai un po' più di scelte.Vedere: https://www.npmjs.org/search?q=sqlite .

nodo-sqlite3

Se disponi di una toolchain di compilazione e non ti interessa dover compilare la tua applicazione per piattaforme diverse (o indirizzare solo una piattaforma), ti consiglio di utilizzare node-sqlite3.È veloce (molto più veloce di sql.js), ha un'API completa e una buona documentazione.Un esempio dell'API è il seguente:

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ì, ancora una volta. sql.js può essere utilizzato da node.Questa è la soluzione se desideri un'applicazione Javascript pura.Tuttavia, sarà più lento della soluzione precedente.

Ecco un esempio di come utilizzare sql.js dal 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 ha un database SQLite integrato, ma dovrai assicurarti che le persone lo abbiano installato se prevedi di fare affidamento su di esso.

A seconda delle circostanze, potresti essere in grado di forzare l'installazione, altrimenti dovresti trattarlo come qualcosa di piacevole da avere, ma con un buon degrado in modo che il sito funzioni ancora se non è installato.

Se stai cercando di accedere ai database SQLite sul browser (ad es.lato client) avrai bisogno del tuo browser per supportarlo.Puoi farlo con SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/ che presuppone che il browser sia basato su Mozilla (es.con supporto SQLite).Dovrai comunque consentire l'accesso alle librerie sottostanti ( http://www.mozilla.org/projects/security/components/signed-scripts.html )

Se stai cercando l'accesso lato server dai programmi Javascript ai database SQLite ci sono diverse opzioni:JSDB è uno http://www.jsdb.org/ ;JSEXT un altro http://jsext.sourceforge.net/ ;e jslibs un altro http://code.google.com/p/jslibs/

--MV

IL sql.js libreria ti consentirà di chiamare query SQL sul lato client.con quella libreria, puoi facilmente trasmettere in streaming tutti i dati tra il server e il client chiamando .open(data) e .exportData().questo è molto utile

inoltre HTML5 ha capacità di archiviazione, ma poiché si tratta di un nuovo standard tecnologico, non si può presumere che tutti i client lo supportino.

Sedia da giardino è un'ottima opzione se non sei bloccato con SQL, poiché offre un approccio chiave/valore facile da usare.queste due librerie costituiscono una soluzione completa per lavorare con il database SQL sul lato client.

Un'altra buona libreria di archiviazione è jstorage.può essere utilizzato per conservare i dati da "sql.js" sul client.Supporta un'ampia varietà di browser (inclusi browser mobili e IE7 e IE7!) e sopravvive anche ai crash del browser.

Se esegui script privilegiati in Windows (in un HTA o WSH), puoi accedere alle origini dati ODBC utilizzando un ActiveXObject "ADODB.Recordset".

Se stai parlando del lato client su una pagina web, il post sopra riguarda:Google Gears è la soluzione migliore.

Puoi eseguirlo con l'API XUL sullo stack di Mozilla Firefox.Questo qualche tutorial a riguardo:http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html

Su un Mac?Dai un'occhiata a JSTalk di Gus Meuller, che sfrutta Scripting Bridge e JSCocoa di Patrick Geiller.

Gus parla specificamente del supporto Sqlite qui: http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html ...funziona alla grande.

JayData fornisce anche un toolkit per lavorare con sqLite/webSql utilizzando JavaScript.Avrai bisogno di un browser, Rhine o Nodejs per eseguire il tutto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top