it-swarm-tr.com

JavaScript sqlite

JavaScript'ten sqlite veritabanlarına erişmek ve bunları yönetmek için en iyi öneriler.

44
benphane

Peki, müşteri tarafında JavaScript üzerinde çalışıyorsanız, bence şansınız kalmayacak ... tarayıcılar JavaScript ortamını temizleme eğilimindedir, böylece makineye bir veritabanına erişmek gibi herhangi bir genel kapasitede erişemezsiniz.

İstemci ucundan erişilen sunucu ucundaki bir SQLite DB'sinden bahsediyorsanız, erişmek için bazı sunucu tarafı kodlarını çağıran bir AJAX çözümü kurabilirsiniz.

Eğer Rhino veya diğer bir sunucu tarafı JavaScript'i hakkında konuşuyorsanız, Host dilinin SQLite'ye API erişimine bakmalısınız (Rhino için JDBC gibi).

Belki de sorunuzu biraz daha netleştirelim ...?

11
Mike Stone

JavaScript'te bir SQLite limanı olan sql.js adlı bir proje var.

sql.js, SQLite C kodunu Emscripten ile derleyerek, JavaScript'in bir SQLite limanıdır.

26
Juicy Scripter

Javascript SQLite çözümleri Panoraması

Tarayıcıda

Bir SQLite veritabanına bir web tarayıcısının içinden erişmek istiyorsanız, fazla bir çözümünüz yok.

sql.js

SQLite C kütüphanesi, emscripten kullanarak javascript 'e taşındı. Liman, Alonzakai (aynı zamanda emscripten yazarı) tarafından sql.js adı altında başlatıldı. Ben bu kütüphanenin şu anki sorumlusuyum.

API şöyle olur:

<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, tarayıcının içinde SQL'i çalıştırmak için yerel bir API üzerinde çalışmaya başlamıştı, web sql. Bu API kullanımına bir örnek:

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")');
});

Ancak, proje terk edildi. Bu nedenle yaygın olarak desteklenmiyor. Bkz .: http://caniuse.com/sql-storage

Düğümde

İstemci tarafı javascript yazarsanız, düğümde, biraz daha seçeneğiniz vardır. Bakınız: https://www.npmjs.org/search?q=sqlite .

düğüm Sqlite3

Bir derleme araç zinciriniz varsa ve başvurunuzu farklı platformlar için derlemek zorunda kalmazsanız (veya yalnızca bir platformu hedeflerseniz), node-sqlite3 kullanmanızı tavsiye ederim. Hızlı (sql.js'den çok daha hızlı), eksiksiz bir API ve iyi bir belgeye sahip. API örneği aşağıdaki gibidir:

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

Evet tekrar. sql.js düğümünden kullanılabilir. __, saf bir javascript uygulaması istiyorsanız bu çözümdür. Ancak, önceki çözümden daha yavaş olacaktır.

Düğümdeki sql.js dosyasının nasıl kullanılacağına bir örnek:

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 dahili bir sqlite veritabanına sahip - ancak, buna güvenmeyi planlıyorsanız, insanların yüklü olmasını sağlamanız gerekir.

Koşullarınıza bağlı olarak, yüklemeyi zorlamanız mümkün olabilir; aksi takdirde, bunu bir Nice-to-Nice olarak kabul etmelisiniz, ancak sitenin kurulmamışsa da çalışabilmesi için zarif bir bozulma vardır.

11
Cebjyre

Tarayıcıdaki SQLite veritabanlarına erişmek istiyorsanız (örneğin, müşteri tarafı), desteklemesi için tarayıcınıza ihtiyacınız olacaktır. Tarayıcının Mozilla tabanlı olduğunu varsayan (ör. SQLite desteğiyle) varsa, SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/ ile yapabilirsiniz. Altta yatan kütüphanelere erişime izin vermeniz gerekir ( http://www.mozilla.org/projects/security/components/signed-scripts.html )

Javascript programlarından SQLite veritabanlarına sunucu erişimi arıyorsanız, birkaç seçenek vardır: JSDB bir http://www.jsdb.org/ ; JSEXT başka http://jsext.sourceforge.net/ ; ve başka jslibs http://code.google.com/p/jslibs/

- MV

10
user7878

sql.js library, istemci tarafında SQL sorguları aramanıza olanak sağlar. Bu libray ile, .open (data) ve .exportData () yöntemlerini arayarak sunucu ile istemci arasındaki tüm verileri kolayca aktarabilirsiniz. bu çok kullanışlı.

ek olarak, HTML5'in depolama yetenekleri vardır , ancak yeni teknoloji standardı olarak, tüm istemcilerin bunu destekleyeceğini varsayamazsınız.

Lawnchair , anahtar/değer yaklaşımının kullanımı kolay olduğu için, SQL'e bağlı kalmamanız durumunda çok iyi bir seçenektir. bu iki kitaplık, istemci tarafında sql veritabanıyla çalışmak için eksiksiz bir çözüm sunar.

Başka bir iyi depolama kütüphanesi jstorage . istemcideki "sql.js" deki verileri korumak için kullanılabilir. Çok çeşitli tarayıcıları (mobil tarayıcılar ve IE7 ve IE7! Dahil) destekler ve hatta tarayıcı çökmelerinden kurtulur.

3
d.popov

Mozilla firefox yığınında XUL API ile gerçekleştirebilirsiniz. Bu konuda bazı öğretici: http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html

2
Brain90

Windows'ta ayrıcalıklı komut dosyaları kullanıyorsanız (bir HTA veya WSH'de), bir "ADODB.Recordset" ActiveXObject kullanarak ODBC veri kaynaklarına erişebilirsiniz.

Bir web sayfasındaki müşteri tarafı hakkında konuşuyorsanız, yukarıdaki yazı şudur: Google Gears en iyi bahistir.

2
Joel Anair

Mac’te mi? Scripting Bridge ve Patrick Geiller'in JSCocoa'sını kullanan Gus Meuller's JSTalk'a bir göz atın.

Gus, burada özellikle Sqlite desteği hakkında konuşuyor: http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html ... harika çalışıyor.

0
jcburns

JayData ayrıca, JavaScript kullanarak sqLite/webSql ile çalışmak için bir araç takımı sağlar. Bir şeyi çalıştırmak için Ren veya Nodejs tarayıcısına ihtiyacınız olacak.

0