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.