it-swarm-eu.dev

JavaScript sqlite

Beste Empfehlungen für den Zugriff und die Bearbeitung von SQLite-Datenbanken von JavaScript aus.

44
benphane

Wenn Sie an clientseitigem JavaScript arbeiten, werden Sie wahrscheinlich kein Glück haben ... Browser neigen dazu, die JavaScript-Umgebung zu verschleiern, sodass Sie keinen Zugriff auf die Maschine haben, wie etwa den Zugriff auf eine Datenbank.

Wenn Sie auf dem Server-Ende von einer SQLite-Datenbank sprechen, auf die vom Client aus zugegriffen wird, können Sie eine AJAX -Lösung einrichten, die einen serverseitigen Code für den Zugriff auf sie aufruft.

Wenn Sie über Rhino oder ein anderes serverseitiges JavaScript sprechen, sollten Sie den API-Zugriff der Host-Sprache in SQLite (z. B. JDBC für Rhino) überprüfen.

Vielleicht klären Sie Ihre Frage etwas mehr ...?

11
Mike Stone

Es gibt ein Projekt namens sql.js , das ein Port von SQLite in JavaScript ist.

sql.js ist ein Port von SQLite zu JavaScript, indem der SQLite C-Code mit Emscripten kompiliert wird.

26
Juicy Scripter

Panorama von Javascript SQLite-Lösungen

Im Browser

Wenn Sie innerhalb eines Webbrowsers auf eine SQLite-Datenbank zugreifen möchten, gibt es nicht viele Lösungen.

sql.js

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

Die API geht wie folgt:

<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, an einer nativen API für die Ausführung von SQL im Browser namens web sql zu arbeiten. 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")');
});

Das Projekt wurde jedoch aufgegeben. Daher wird es nicht allgemein unterstützt. Siehe: http://caniuse.com/sql-storage

Im Knoten

Wenn Sie clientseitiges Javascript in node schreiben, haben Sie etwas mehr Auswahlmöglichkeiten. Siehe: https://www.npmjs.org/search?q=sqlite .

node-sqlite3

Wenn Sie über eine Kompilierungs-Toolchain verfügen und sich nicht darum kümmern müssen, Ihre Anwendung für verschiedene Plattformen (oder nur für eine Plattform) zu kompilieren, würde ich Ihnen raten, node-sqlite3 zu verwenden. 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

Wieder ja. sql.js kann vom Knoten ..__ verwendet werden. Dies ist die Lösung, wenn Sie eine reine Javascript-Anwendung wünschen. Es ist jedoch langsamer als die vorherige Lösung.

Hier ist ein Beispiel für die Verwendung von sql.js vom Knoten:

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

Google Gears verfügt über eine integrierte SQLite-Datenbank - Sie müssen jedoch sicherstellen, dass die Benutzer diese installiert haben, wenn Sie sich darauf verlassen möchten.

Abhängig von Ihren Umständen können Sie möglicherweise die Installation erzwingen, andernfalls sollten Sie die Installation als "Nice-to-have" behandeln, aber sie muss ordnungsgemäß heruntergefahren werden, damit die Site weiterhin funktioniert, wenn sie nicht installiert ist.

11
Cebjyre

Wenn Sie auf SQLite-Datenbanken im Browser (dh auf der Clientseite) zugreifen möchten, benötigen Sie Ihren Browser, um dies zu unterstützen. Sie können dies mit SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/ tun, wobei davon ausgegangen wird, dass der Browser Mozilla-basiert ist (dh mit SQLite-Unterstützung). Sie müssen weiterhin Zugriff auf die zugrunde liegenden Bibliotheken gewähren ( http://www.mozilla.org/projects/security/components/signed-scripts.html ).

Wenn Sie nach serverseitigem Zugriff von Javascript-Programmen auf SQLite-Datenbanken suchen, gibt es mehrere Optionen: JSDB ist eine http://www.jsdb.org/ ; JSEXT eine andere http://jsext.sourceforge.net/ ; und jslibs ein anderes http://code.google.com/p/jslibs/

- MV

10
user7878

Mit der Bibliothek sql.js können Sie SQL-Abfragen auf der Clientseite aufrufen. Mit dieser Bibliothek können Sie problemlos die gesamten Daten zwischen dem Server und dem Client streamen, indem Sie .open (data) und .exportData () aufrufen. das ist sehr praktisch.

darüber hinaus verfügt HTML5 über Speicherfunktionen , aber als neuer Technologiestandard können Sie nicht davon ausgehen, dass alle Clients dies unterstützen.

Lawnchair ist eine sehr gute Option, wenn Sie sich nicht mit SQL beschäftigen, da dies einen einfachen Schlüssel-/Wert-Ansatz bietet. Diese beiden Bibliotheken bieten eine vollständige Lösung für das Arbeiten mit der SQL-Datenbank auf Clientseite.

Eine weitere gute Speicherbibliothek ist jstorage . Es kann verwendet werden, um die Daten von "sql.js" auf dem Client zu speichern. Es unterstützt eine Vielzahl von Browsern (einschließlich mobiler Browser sowie IE7 und IE7!) Und überlebt sogar Browserabstürze.

3
d.popov

Sie können es mit XUL API auf Mozilla Firefox Stack ausführen. Dieses Tutorial dazu: http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html

2
Brain90

Wenn Sie unter Windows privilegierte Skripts ausführen (entweder in einer HTA oder in einem WSH), können Sie auf Datenquellen ODBC mit einem ActiveXObject "ADODB.Recordset" zugreifen.

Wenn Sie auf einer Webseite über die Client-Seite sprechen, ist der obige Beitrag zu Google Gears die beste Wahl.

2
Joel Anair

Auf einem Mac Werfen Sie einen Blick auf Gus Meullers JSTalk, der Scripting Bridge und Patrick Geillers JSCocoa nutzt.

Gus spricht hier speziell über die Unterstützung von Sqlite: http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html ... funktioniert super.

0
jcburns

JayData bietet auch ein Toolkit für die Verwendung von sqLite/webSql mit JavaScript. Sie benötigen jedoch einen Browser, Rhein oder Nodejs, um das Ding auszuführen.

0