JavaScript에서 SQLite 데이터베이스에 액세스 할 수 있습니까?


97

HTML 파일 세트와 SQLite 데이터베이스가 있는데 file : // 스키마를 사용하여 브라우저에서 액세스하고 싶습니다. JavaScript를 사용하여 데이터베이스에 액세스하고 쿼리 (및 테이블)를 만들 수 있습니까?


3
file:계획에 의해 브라우저 가 실행 되는 컴퓨터에서 의미 합니까?

3
예. 현재 보고서 (이미지, html 파일 및 sqlite 데이터베이스)를 만드는 도구가 있습니다. 이 보고서를 로컬에서 간단히 열 수 있습니다 (예 : $ google-chrome report_out / index.html). 나는 이것을 좀 더 상호 작용 적으로 만들고 싶다. 그래서 자바 스크립트는 데이터베이스에서 생성 된 데이터를 읽고 그것으로부터 통계를 생성 할 것이다.
Pal Szasz

나는 웹 소켓 프록시를 통해 연결을 할 수있을 거라고 생각하지만, 그것을 설정하는 작업이 꽤 걸릴 것
hanshenrik

답변:


41

사실 대답은 '예'입니다. 다음은이를 수행하는 방법의 예입니다. http://html5doctor.com/introducing-web-sql-databases/

나쁜 점은 브라우저가 매우 제한적으로 지원한다는 것입니다.

자세한 내용은 여기 HTML5 IndexedDB, 웹 SQL 데이터베이스 및 브라우저 전쟁

추신 : @Christoph가 말했듯이 웹 SQL이 활성 유지 보수 및 워킹 그룹이 더 그것을 유지하려고하지 않는 웹 응용 프로그램에 더 이상 그래서 여기 보면 https://developer.mozilla.org/en-US/docs/IndexedDB .

SQL.js

편집하다

@clentfort 말했듯이, 당신은 사용하여 클라이언트 측 자바 스크립트와 SQLite는 데이터베이스에 액세스 할 수 SQL.js을 .


14
참고로 websql이 중단되었습니다 ... 대신 indexedDB 를 승격 하십시오 .
Christoph

2
그러나 이미 존재하는 데이터베이스에 연결할 수 있습니까? 나는 이미 많은 데이터를 가지고 있는데 자바 스크립트로 처리하고 싶습니다.
Pal Szasz

서버 측 항목을 사용하거나이 코드에 대해 Node.JS를 사용해 볼 수 있습니다 .forgeek.com / 2014
07 /

40

JavaScript로 컴파일 된 SQLlite lib 인 SQL.js 를 사용 하여 HTML5에 도입 된 로컬 저장소에 데이터베이스를 저장할 수 있습니다.


9
로컬 스토리지는 매우 느리고 어색합니다. 대신 indexedDB를 사용해야합니다. 그럼에도 불구하고 이것은 내가 생각하는 작동하는 해결책입니다.
Christoph

2
localstorage는 indexedDB만큼 좋지는 않지만 거의 모든 곳에서 지원됩니다. SQL.js는 localstorage를 직접 사용하지 않으므로 (메모리에 있음) 시작 / 종료시 localstorage에서 읽고 쓰기 만하면되며 SQL.js의 상태를 서버에 저장할 수도 있습니다. 사용자가 특별히 변경 사항을 저장하기를 원하면 좋으며, 저장하지 않고 떠날 경우 문제가 발생할 수 있습니다.
Perkins

20

최신 답변

내 sql.js 포크가 이제 kriken의 repo에있는 원래 버전 으로 병합되었습니다 .

좋은 문서는 또한 원래의 repo에서 사용할 수 있습니다.

원래 답변 (오래된)

당신은 사용해야 의 최신 버전 sql.js을 . sqlite 3.8의 포트이며 좋은 문서를 가지고 있으며 (내가) 적극적으로 유지 관리합니다. 준비된 명령문 및 BLOB 데이터 유형을 지원합니다.


서버 측에있는 SQLite 데이터베이스에 액세스 (삽입, 업데이트, 읽기)하기 위해 sql.js를 사용할 수 있습니까?
Abhee 2015-07-25

@lovasoa sql.js를 사용하는 경우 새 컴퓨터에서 내 사이트를 실행하고 설치를 수행하지 않고 데이터베이스 (HTML 폴더와 동일한 경로에 저장된 DB)에 CRUD를 수행 할 수 있습니까?
Jeaf Gilbert

1
@JeafGilbert No. sql.js는 메모리 내에서 독점적으로 작동하며 아무것도 유지되지 않습니다. 파일 시스템에 데이터베이스 파일을 작성하려면 해당 논리를 직접 작성해야합니다.
lovasoa

4

의 가장 흥미로운 기능 중 하나는 HTML5데이터를 로컬에 저장하고 응용 프로그램을 오프라인으로 실행할 수있는 기능입니다. 이러한 기능을 처리하는 세 가지 API가 있으며 하나를 선택하는 것은 로컬에 저장하려는 데이터로 정확히 무엇을 하려는지에 따라 달라집니다.

  1. 웹 저장소 : 키 / 값 쌍이있는 기본 로컬 저장 소용
  2. 오프라인 저장소 : 매니페스트를 사용하여 오프라인 사용을 위해 전체 파일을 캐시합니다.
  3. 웹 데이터베이스 : 관계형 데이터베이스 저장 소용

자세한 내용 은 HTML5 저장소 API 소개를 참조하세요.

그리고 사용 방법

http://cookbooks.adobe.com/post_Store_data_in_the_HTML5_SQLite_database-19115.html


5
hehe, 답의 두 번째 개정판을 살펴보십시오. 거기에서 읽을 수 있습니다.)
Christoph


-2

IMHO, 가장 좋은 방법은 AJAX를 통해 POST를 사용하여 Python을 호출하고 Python 내에서 DB로 수행하는 데 필요한 모든 작업을 수행 한 다음 결과를 javascript로 반환하는 것입니다. Python의 json 및 sqlite 지원은 훌륭하며 최신 버전의 Python에도 100 % 내장되어 있으므로 "이것을 설치하고 설치하십시오"라는 고통이 없습니다. Python에서 :

import sqlite3
import json

... 그게 필요한 전부입니다. 모든 Python 배포의 일부입니다.

@Sedrick Jefferson이 예제를 요청했기 때문에 (다소 지각하게) 여기서 Javascript와 Python 사이에 독립형 앞뒤로 작성했습니다.


2
질문에 "... 브라우저에서 액세스하고 싶습니다 ..." 가 포함되어 있습니다 . 그래서 당신의 대답은 (와 함께 python) 영역을 벗어났습니다 (적어도 오늘, 브라우저에서 파이썬을 실행하는 것이 그렇게 쉽지 않을 때)
maxkoryukov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.