it-swarm-ko.tech

자바 스크립트 sqlite

JavaScript에서 sqlite 데이터베이스에 액세스하고 조작하기위한 권장 사항.

44
benphane

글쎄, 당신이 클라이언트 측 JavaScript에서 작업하고 있다면, 운이 좋지 않을 것이라고 생각합니다 ... 브라우저는 JavaScript 환경을 샌드 박스로 만드는 경향이 있으므로 데이터베이스에 액세스하는 것과 같은 일반적인 용량의 시스템에 액세스 할 수 없습니다.

클라이언트 쪽에서 액세스 한 서버 쪽의 SQLite DB에 대해 이야기하는 경우 일부 서버 쪽 코드를 호출하여 액세스하는 AJAX 솔루션을 설정할 수 있습니다.

Rhino 또는 다른 서버 측 JavaScript에 대해 이야기하는 경우 호스트 언어의 SQLite에 대한 API 액세스 (예 : JDBC for Rhino)를 살펴보십시오.

아마도 당신의 질문을 좀 더 명확히 할 수 있습니까?

11
Mike Stone

sql.js JavaScript의 SQLite 포트입니다.

sql.js는 SQLite C 코드를 Emscripten으로 컴파일하여 JavaScript에 대한 SQLite의 포트입니다.

26
Juicy Scripter

자바 스크립트 SQLite 솔루션의 파노라마

브라우저에서

웹 브라우저 내부에서 SQLite 데이터베이스에 액세스하려면 솔루션이 많지 않습니다.

sql.js

SQLite C 라이브러리는 emscripten 을 사용하여 ported to javascript입니다. 이 포트는 Alon Zakai (제국의 저자이기도 함)가 sql.js 라는 이름으로 시작했습니다. 이 라이브러리의 현재 관리자입니다.

API는 다음과 같습니다.

<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>

웹 SQL

W3C는 web sql이라는 브라우저 내에서 SQL을 실행하기위한 고유 API를 사용하기 시작했습니다. 해당 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")');
});

그러나 프로젝트는 abandoned입니다. 따라서 널리 지원되지 않습니다. 참조 : http://caniuse.com/sql-storage

노드에서

노드에서 클라이언트 측 자바 스크립트를 작성하면 조금 더 선택할 수 있습니다. https://www.npmjs.org/search?q=sqlite 참조하십시오.

node-sqlite3

컴파일 툴체인이 있고 다른 플랫폼 (또는 하나의 플랫폼 만 대상)을 위해 애플리케이션을 컴파일 할 필요가없는 경우 node-sqlite3 를 사용하는 것이 좋습니다. 빠르며 (sql.js보다 훨씬 빠름) 완전한 API와 좋은 문서가 있습니다. API의 예는 다음과 같습니다.

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

예, 다시 sql.js 노드에서 사용할 수 있습니다. 순수한 자바 스크립트 응용 프로그램을 원하는 경우 솔루션입니다. 그러나 이전 솔루션보다 느립니다.

다음은 노드에서 sql.js를 사용하는 방법의 예입니다.

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 에는 sqlite 데이터베이스가 내장되어 있지만이를 사용하려면 사람들이 데이터베이스를 설치해야합니다.

상황에 따라 설치를 시행 할 수도 있습니다. 그렇지 않으면 설치를 기쁘게 처리해야하지만 사이트가 설치되지 않은 경우에도 사이트가 계속 작동하도록 정상적으로 성능을 저하시켜야합니다.

11
Cebjyre

브라우저 (예 : 클라이언트 쪽)에서 SQLite 데이터베이스에 액세스하려는 경우이를 지원하려면 브라우저가 필요합니다. SpiderApe http://spiderape.sourceforge.net/plugins/sqlite/ 를 사용하면 브라우저가 Mozilla 기반이라고 가정합니다 (예 : SQLite 지원). 여전히 기본 라이브러리에 대한 액세스를 허용해야합니다 ( http://www.mozilla.org/projects/security/components/signed-scripts.html )

Javascript 프로그램에서 SQLite 데이터베이스로의 서버 측 액세스를 찾는 경우 몇 가지 옵션이 있습니다. JSDB는 하나입니다 http://www.jsdb.org/ ; JSEXT 또 다른 http://jsext.sourceforge.net/ ; jslibs 다른 http://code.google.com/p/jslibs/

-MV

10
user7878

sql.js 라이브러리를 사용하면 클라이언트 측에서 SQL 쿼리를 호출 할 수 있습니다. 해당 libray를 사용하면 .open (data) 및 .exportData ()를 호출하여 서버와 클라이언트간에 전체 데이터를 쉽게 스트리밍 할 수 있습니다. 이것은 매우 편리합니다.

또한 HTML5에는 스토리지 기능 이 있지만 새로운 기술 표준으로 모든 클라이언트가이를 지원한다고 가정 할 수는 없습니다.

Lawnchair SQL을 사용하지 않는 경우 키/값 접근 방식을 쉽게 사용할 수 있으므로 매우 좋은 옵션입니다. 이 두 라이브러리는 클라이언트 측에서 SQL 데이터베이스 작업을위한 완벽한 솔루션을 제공합니다.

또 다른 좋은 스토리지 라이브러리는 jstorage 입니다. 클라이언트에서 "sql.js"의 데이터를 보존하는 데 사용할 수 있습니다. 다양한 브라우저 (모바일 브라우저 및 IE7 및 IE7 포함)를 지원하며 브라우저 충돌에서도 살아남습니다.

3
d.popov

Mozilla firefox 스택에서 XUL API로이를 수행 할 수 있습니다. 이 튜토리얼은 http://www.arashkarimzadeh.com/articles/10-xul/25-sqlite-api-for-xul-application-using-javascript.html

2
Brain90

Windows (HTA 또는 WSH)에서 권한있는 스크립트를 실행중인 경우 "ADODB.Recordset"ActiveXObject를 사용하여 ODBC 데이터 소스에 액세스 할 수 있습니다.

웹 페이지에서 고객 측에 대해 이야기하는 경우 위의 게시물 : Google Gears가 가장 좋습니다.

2
Joel Anair

Mac에서? Scripting Bridge와 Patrick Geiller의 JSCocoa를 활용하는 Gus Meuller의 JSTalk를 살펴보십시오.

거스는 Sqlite 지원에 대해 구체적으로 이야기합니다 : http://gusmueller.com/blog/archives/2009/03/jstalk_extras.html ... 작동합니다.

0
jcburns

JayData 는 JavaScript를 사용하여 sqLite/webSql과 작업 할 수있는 툴킷도 제공합니다. 그래도 작업을 수행하려면 브라우저, 라인 또는 Nodejs가 필요합니다.

0
Peter Aron Zentai