it-swarm-vi.tech

JavaScript vuông

Các khuyến nghị tốt nhất để truy cập và thao tác cơ sở dữ liệu sqlite từ JavaScript.

44
benphane

Chà, nếu bạn đang làm việc với JavaScript phía máy khách, tôi nghĩ bạn sẽ không gặp may ... trình duyệt có xu hướng sandbox môi trường JavaScript để bạn không có quyền truy cập vào máy trong bất kỳ loại dung lượng chung nào như truy cập cơ sở dữ liệu.

Nếu bạn đang nói về SQLite DB ở đầu máy chủ được truy cập từ đầu máy khách, bạn có thể thiết lập giải pháp AJAX để gọi một số mã phía máy chủ để truy cập vào nó.

Nếu bạn đang nói về Rhino hoặc một số JavaScript phía máy chủ khác, bạn nên xem xét quyền truy cập API của ngôn ngữ máy chủ vào SQLite (chẳng hạn như JDBC cho Rhino).

Có lẽ làm rõ câu hỏi của bạn hơn một chút ...?

11
Mike Stone

Có một dự án gọi là sql.js là một cổng của SQLite trong JavaScript.

sql.js là một cổng của SQLite sang JavaScript, bằng cách biên dịch mã SQLite C với Emscripten.

26
Juicy Scripter

Toàn cảnh các giải pháp SQLite javascript

Trong trình duyệt

Nếu bạn muốn truy cập cơ sở dữ liệu SQLite từ bên trong trình duyệt web, bạn không có nhiều giải pháp.

sql.js

Thư viện SQLite C đã được chuyển sang javascript bằng cách sử dụng emscripten . Cổng được bắt đầu dưới tên sql.js bởi Alon Zakai (cũng là tác giả của emscripten). Tôi là người duy trì hiện tại của thư viện này.

API như sau:

<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 đã bắt đầu hoạt động trên API gốc để thực thi SQL bên trong trình duyệt, được gọi là web sql. Một ví dụ về việc sử dụng 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")');
});

Tuy nhiên, dự án đã bị bỏ rơi. Do đó, nó không được hỗ trợ rộng rãi. Xem: http://caniuse.com/sql-st Storage

Trong nút

Nếu bạn viết javascript phía máy khách, trong nút, bạn có thêm một chút lựa chọn. Xem: https://www.npmjs.org/search?q=sqlite .

nút-sqlite3

Nếu bạn có một công cụ biên dịch và không quan tâm đến việc phải biên dịch ứng dụng của mình cho các nền tảng khác nhau (hoặc chỉ nhắm mục tiêu một nền tảng), tôi sẽ khuyên bạn nên sử dụng node-sqlite3 . Nó nhanh (nhanh hơn nhiều so với sql.js), có API hoàn chỉnh và tài liệu tốt. Một ví dụ về API như sau:

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

Vâng, một lần nữa. sql.js có thể được sử dụng từ nút . Đây là giải pháp nếu bạn muốn có một ứng dụng javascript thuần túy. Tuy nhiên, nó sẽ chậm hơn giải pháp trước đó.

Dưới đây là một ví dụ về cách sử dụng sql.js từ nút:

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 có cơ sở dữ liệu sqlite tích hợp - nhưng bạn sẽ cần đảm bảo rằng mọi người đã cài đặt nó nếu bạn định dựa vào nó.

Tùy thuộc vào hoàn cảnh của bạn, bạn có thể thực thi cài đặt, nếu không, bạn nên coi nó là một thứ tốt đẹp, nhưng có sự xuống cấp duyên dáng để trang web vẫn hoạt động nếu nó không được cài đặt.

11
Cebjyre

Nếu bạn đang tìm cách truy cập cơ sở dữ liệu SQLite trên trình duyệt (ví dụ: phía máy khách), bạn sẽ cần trình duyệt của mình để hỗ trợ nó. Bạn có thể làm điều đó với SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/ giả định rằng trình duyệt dựa trên Mozilla (nghĩa là có hỗ trợ SQLite). Bạn vẫn sẽ cần cho phép truy cập vào các thư viện cơ bản ( http://www.mozilla.org/projects/security/components/sign-scripts.html )

Nếu bạn đang tìm kiếm quyền truy cập máy chủ từ các chương trình Javascript vào cơ sở dữ liệu SQLite, có một số tùy chọn: JSDB là một http://www.jsdb.org/ ; TÌM HIỂU khác http://jsext.sourceforge.net/ ; và jslibs khác http://code.google.com.vn/p/jslibs/

- MV

10
user7878

Thư viện sql.js sẽ cho phép bạn gọi các truy vấn SQL ở phía máy khách. với thư viện đó, bạn có thể dễ dàng truyền toàn bộ dữ liệu giữa máy chủ và máy khách bằng cách gọi .open (dữ liệu) và .exportData (). cái này rất tiện.

ngoài ra, HTML5 có khả năng lưu trữ , nhưng là tiêu chuẩn công nghệ mới, bạn không thể cho rằng tất cả các máy khách sẽ hỗ trợ điều đó.

Thảm cỏ là tùy chọn rất tốt nếu bạn không bị mắc kẹt với SQL, vì nó mang lại cách tiếp cận khóa/giá trị dễ sử dụng. hai thư viện này tạo ra một giải pháp hoàn chỉnh để làm việc với cơ sở dữ liệu sql ở phía máy khách.

Một thư viện lưu trữ tốt khác là jst Storage . nó có thể được sử dụng để bảo tồn dữ liệu từ "sql.js" trên máy khách. Nó hỗ trợ rất nhiều trình duyệt (bao gồm cả trình duyệt di động và IE7 và IE7!), Và thậm chí còn sống sót sau sự cố trình duyệt.

3
d.popov

Bạn có thể thực hiện nó với XUL API trên ngăn xếp mozilla firefox. Đây là một số hướng dẫn về nó: http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-USE-javascript.html

2
Brain90

Nếu bạn đang chạy các tập lệnh đặc quyền trong Windows (trong HTA hoặc WSH), bạn có thể truy cập các nguồn dữ liệu ODBC bằng cách sử dụng ActiveXObject "ADODB.Recordset".

Nếu bạn đang nói về phía khách hàng trên một trang web, bài đăng trên đây: Google Gears là lựa chọn tốt nhất của bạn.

2
Joel Anair

Trên máy Mac? Hãy xem JSTalk của Gus Meuller, nơi tận dụng Scripting Bridge và Patrick Geiller's JSCocoa.

Gus nói riêng về hỗ trợ Sqlite tại đây: http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html ... hoạt động rất tốt.

0
jcburns

JayData cũng cung cấp bộ công cụ để hoạt động với sqLite/webSql bằng JavaScript. Bạn sẽ cần một trình duyệt, Rhine hoặc Nodejs để chạy mọi thứ.

0
Peter Aron Zentai