Frage

Die besten Empfehlungen für den Zugriff und Manipulation von SQLite-Datenbanken von JavaScript.

War es hilfreich?

Lösung

Nun, wenn Sie auf Client-Seite JavaScript arbeiten, ich glaube, Sie Pech sein ... Browser neigt dazu, die JavaScript-Umgebung zu einer Sandbox, so dass Sie in jeder Art von allgemeiner Kapazität keinen Zugriff auf die Maschine wie der Zugriff auf eine Datenbank.

Wenn Sie über eine SQLite DB auf dem Server Ende von der Client-Seite zugegriffen sprechen, könnten Sie eine AJAX-Lösung einrichten, dass einige Server-Seite Code ruft sie zugreifen zu können.

Wenn Sie über Rhino sprechen oder eine andere Server-Seite JavaScript, sollten Sie in SQLite Blick in die API-Zugriff der Host-Sprache (wie die JDBC für Rhino).

klären Vielleicht ist Ihre Frage ein bisschen mehr ...?

Andere Tipps

Es gibt ein Projekt namens sql.js das ist eine Portierung von SQLite in JavaScript.

  

sql.js ist eine Portierung von SQLite zu JavaScript, indem Sie den SQLite-C-Code mit Emscripten kompilieren.

Panorama von JavaScript-SQLite-Lösungen

im Browser

Wenn Sie eine SQLite-Datenbank innerhalb eines Web-Browser zugreifen möchten, Sie haben nicht viele Lösungen.

sql.js

Die SQLite-C-Bibliothek wurde Javascript portiert mit Emscripten . Der Hafen wurde unter dem Namen gestartet von sql.js von Alon Zakai (der auch der Autor von Emscripten ist). Ich bin der aktuelle Betreuer dieser Bibliothek.

Die API geht wie:

<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

Das W3C hatte begonnen, auf einer nativen API arbeitet SQL innerhalb des Browsers für die Ausführung, die so genannten Web SQL . Ein Beispiel für die Verwendung dieser 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")');
});

Doch das Projekt wurde aufgegeben . So ist es nicht weit unterstützt. Siehe: http://caniuse.com/sql-storage

In Knoten

Wenn Sie clientseitige JavaScript schreiben, in Knoten, haben Sie ein wenig mehr Auswahl. Siehe: https://www.npmjs.org/search?q=sqlite

.

node-sqlite3

Wenn Sie eine Zusammenstellung Werkzeugkette aufweisen und darüber, dass die Anwendung für verschiedene Plattformen kompilieren (oder Ziel nur eine Plattform) ist es egal, würde ich empfehlen, dass Sie a href verwenden <= "https: // www. npmjs.org/package/sqlite3">node-sqlite3 . Es ist schnell (viel schneller als sql.js), verfügt über eine vollständige API und eine gute Dokumentation. Ein Beispiel für die API ist wie folgt:

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

Ja, wieder. sql.js können von Knoten verwendet werden. Dies ist die Lösung, wenn Sie eine reine Javascript-Anwendung mögen. Es wird jedoch langsamer als die bisherige Lösung sein.

Hier ist ein Beispiel dafür, wie sql.js von Knoten zu verwenden:

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 verfügt über eine integrierte in SQLite-Datenbank - aber Sie werden sicherstellen müssen, dass die Leute es haben wenn Sie installiert planen darauf verlassen.

Je nach Umständen können Sie in der Lage sein, die Installation zu erzwingen, sonst können Sie es als nice-to-have behandeln sollen, haben aber Graceful Degradation so dass die Website immer noch funktioniert, wenn es nicht installiert ist.

Wenn Sie schauen auf den Browser SQLite Datenbanken zuzugreifen (dh. Client-Seite) finden Sie Ihren Browser benötigen, sie zu unterstützen. Sie können es mit SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/ die davon ausgeht, dass der Browser Mozilla basiert (dh. mit SQLite Unterstützung). Sie werden immer noch Zugang zu den zugrundeliegenden Bibliotheken zu ermöglichen, müssen ( http: // www.mozilla.org/projects/security/components/signed-scripts.html )

Wenn Sie suchen server Zugang von Javascript-Programmen zu SQLite-Datenbanken gibt es mehrere Optionen: JSDB ist ein http: / /www.jsdb.org/ ; JSEXT andere http://jsext.sourceforge.net/ ; und jslibs andere http://code.google.com/p/jslibs/

- MV

Die sql.js Bibliothek ermöglicht es Ihnen, SQL-Abfragen auf der Client-Seite aufzurufen. mit diesem libray, können Sie einfach durch den Aufruf .open (Daten) und .exportData (), um die gesamten Daten zwischen dem Server und dem Client streamen. das ist sehr praktisch.

zusätzlich HTML5 hat Speicherfähigkeiten , sondern als neue Technologie-Standard können Sie nicht davon ausgehen, dass alle Kunden werden das unterstützen.

Lawnchair ist sehr gute Option, wenn Sie nicht mit SQL stecken geblieben sind, da es eine einfache gibt Schlüssel zu verwenden / Value-Ansatz. diese beiden Bibliotheken machen eine Komplettlösung für mit SQL-Datenbank auf Client-Seite zu arbeiten.

Eine weitere gute Speicherbibliothek ist jstorage . es kann verwendet werden, um die Daten aus dem „sql.js“ auf dem Client zu erhalten. Es unterstützt eine Vielzahl von Browsern (einschließlich mobilen Browser und IE7 und IE7!), Und überlebt auch Browser stürzt ab.

Wenn Sie privilegierte Skripte in Windows ausführen (entweder in einem HTA oder WSH), können Sie ODBC-Datenquellen zugreifen ein "ADODB.Recordset" ActiveXObject verwendet wird.

Wenn Sie sich über die Client-Seite auf einer Webseite zu sprechen, die oben genannte Post re:. Google Gears ist die beste Wahl

Sie können es mit XUL API auf mozilla firefox Stapel durchführen. Dies ist etwas Tutorial darüber: http: // www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html

Auf einem Mac? Schauen Sie sich auf Gus Meuller der JSTalk, die Scripting-Brücke und Patrick Geiller der JSCocoa nutzt.

Gus spricht speziell über die SQLite-Unterstützung hier: http: // gusmueller. com / blog / Archiv / 2009/03 / jstalk_extras.html ... funktioniert super.

JayData bietet auch ein Toolkit mit SQLite arbeiten / WebSQL mit JavaScript. Sie werden einen Browser benötigen, Rhein oder NodeJS obwohl das Ding zu laufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top