it-swarm-eu.dev

JavaScript sqlite

Nejlepší doporučení pro přístup a manipulaci s databázemi sqlite z JavaScriptu.

44
benphane

No, pokud pracujete na straně klienta JavaScript, myslím, že budete mít štěstí ... prohlížeče mají tendenci sandbox prostředí JavaScript, takže nemáte přístup k počítači v jakékoli obecné kapacity, jako je přístup k databázi.

Pokud mluvíte o SQLite DB na konci serveru přístupném z klientského konce, můžete nastavit řešení AJAX, které vyvolá nějaký kód na straně serveru pro přístup k němu.

Pokud mluvíte o Rhinu nebo jiném JavaScriptu na straně serveru, měli byste se podívat do přístupu API jazyka Host do SQLite (například JDBC pro Rhino).

Trochu objasnit vaši otázku ...?

11
Mike Stone

Tam je projekt nazvaný sql.js který je port SQLite v JavaScriptu.

sql.js je port SQLite k JavaScriptu, kompilováním SQLite C kódu s Emscripten.

26
Juicy Scripter

Panorama řešení javascript SQLite

V prohlížeči

Pokud chcete získat přístup k databázi SQLite z webového prohlížeče, nemáte mnoho řešení.

sql.js

Knihovna SQLite C byla ported to javascript using emscripten . Port byl spuštěn pod jménem sql.js Alon Zakai (který je také autorem emscriptenu). Jsem současný správce této knihovny.

API vypadá jako:

<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

W3C začal pracovat na nativním API pro provádění SQL v prohlížeči, nazvaném web sql. Příklad použití tohoto rozhraní 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")');
});

Projekt však byl opuštěn. Není tedy široce podporován. Viz: http://caniuse.com/sql-storage

V uzlu

Pokud píšete javascript na straně klienta, v uzlu máte o něco více možností. Viz: https://www.npmjs.org/search?q=sqlite .

node-sqlite3

Máte-li kompilaci toolchain, a nemůže se starat o to, aby bylo nutné zkompilovat aplikaci pro různé platformy (nebo cílit pouze jednu platformu), doporučuji použít node-sqlite3 . Je to rychlé (mnohem rychlejší než sql.js), má kompletní API a dobrou dokumentaci. Příklad rozhraní API je následující:

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

Ano, znovu. sql.js lze použít z uzlu. Toto je řešení, pokud chcete čistě javascriptovou aplikaci. Bude však pomalejší než předchozí řešení.

Zde je příklad použití sql.js z uzlu:

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 má vestavěnou databázi sqlite - ale budete muset zajistit, aby ji lidé instalovali, pokud se na ni chcete spolehnout.

V závislosti na vašich okolnostech můžete být schopni vynutit instalaci, jinak byste s ní měli zacházet jako s Nice-to-have, ale měli by být ladně degradováni, aby stránky fungovaly, i když nejsou nainstalovány.

11
Cebjyre

Pokud hledáte přístup k databázím SQLite v prohlížeči (tj. Na straně klienta), budete potřebovat prohlížeč, který je podporuje. Můžete to udělat pomocí SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/ který předpokládá, že prohlížeč je založen na Mozille (tj. S podporou SQLite). Stále budete muset povolit přístup k základním knihovnám ( http://www.mozilla.org/projects/security/components/signed-scripts.html )

Pokud hledáte serverový přístup z programů Javascript do databází SQLite, existuje několik možností: JSDB je jedna http://www.jsdb.org/ ; JSEXT další http://jsext.sourceforge.net/ ; a jslibs další http://code.google.com/p/jslibs/

- MV

10
user7878

Knihovna sql.js vám umožní volat dotazy SQL na straně klienta. s tímto libray, můžete snadno streamovat celá data mezi serverem a klientem voláním .open (data) a .exportData (). to je velmi užitečné.

navíc HTML5 má možnosti ukládání , ale jako nový technologický standard, nemůžete předpokládat, že všichni klienti to podporují.

Lawnchair je velmi dobrá volba, pokud nejste uvízl s SQL, protože dává snadno použitelný klíč/hodnota přístup. tyto dvě knihovny tvoří kompletní řešení pro práci s databází sql na straně klienta.

Další dobrá knihovna je jstorage . může být použit pro uchování dat z "sql.js" na klientovi. Podporuje širokou škálu prohlížečů (včetně mobilních prohlížečů a IE7 a IE7!), A dokonce přežije zhroucení prohlížeče.

3
d.popov

Můžete to provést s XUL API na mozilla firefox stack. Tento návod: http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html

2
Brain90

Pokud používáte privilegované skripty v systému Windows (buď v HTA nebo WSH), můžete k datovým zdrojům ODBC přistupovat pomocí "ADODB.Recordset" ActiveXObject.

Pokud mluvíte o straně klienta na webové stránce, výše uvedený příspěvek re: Google Gears je vaše nejlepší sázka.

2
Joel Anair

Na počítači Mac? Podívejte se na GST Meullerův JSTalk, který využívá Scripting Bridge a JSCocoa Patricka Geillera.

Gus mluví konkrétně o podpoře Sqlite zde: http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html ... funguje skvěle.

0
jcburns

JayData také poskytuje sadu nástrojů pro práci s sqLite/webSql pomocí JavaScriptu. Budeš potřebovat prohlížeč, Rýn nebo Nodejs, aby si tu věc spustil.

0