2011-09-02 7 views
-3

데이터베이스가 열렸고 테이블이 생성되었습니다.삽입을 삽입하지 않는 이유는 무엇입니까?

Components.utils.import("resource://gre/modules/Services.jsm"); 
Components.utils.import("resource://gre/modules/FileUtils.jsm"); 
let file = FileUtils.getFile("ProfD", ["filef.sqlite"]); 
let dbconn = Services.storage.openDatabase(file); 
dbconn.executeSimpleSQL('CREATE TABLE IF NOT EXISTS "quicklink" ("id" INTEGER PRIMARY KEY NOT NULL , "name" VARCHAR NOT NULL , "href" VARCHAR NOT NULL)'); 
var sqlinsert=dbconn.createStatement('INSERT INTO "quicklink" ("name","href") VALUES (:name,:href)'); 
sqlinsert.params.name = "Something"; 
sqlinsert.params.href = "URL"; 
dbconn.close(); 

내가 불을 지르고 콘솔에서 오류 (들)하지 않는, 또는 시도 {} 캐치() {} 문을 오순절 :하지만 내가 모질라 sqlite가 저장 useing있어, 기록을 삽입 할 수 없습니다. 왜? 문제는 무엇입니까?

+8

이 코드의'execute' 부분은 어디에 있는지 알 수 없습니까? – SQLMenace

+2

"작동하지 않는다"는 것은 무엇을 의미합니까? 어떤 오류가 있습니까? 그것은 조용히 실패합니까? –

+0

이 작동하지 않는다는 것은 테이블에 레코드를 추가하지 않는다는 것을 의미합니다. – golddragon007

답변

2
  1. 일반적으로 클라이언트 쪽 자바 스크립트에서는 데이터베이스 액세스를 수행 할 수 없습니다.

    많은 예외가 있습니다 (예를 들어, 서버에서 Node.js를 사용하고 있거나 로컬 Sqlite 데이터베이스에서 HP WebOS를 사용하고있는 경우), 게시물에 아무것도 표시되지 않았습니다. 환경 또는 데이터베이스 연결.

  2. 환경에서 Javascript를 사용하여 데이터베이스에 합법적으로 연결할 수 있다고 가정 할 때 준비된 SQL 문을 어디에서 실행하는지 알 수 없습니다.

제안 :

  1. 당신이 "실행"문 및 해당 오류 처리기

  2. 이 우리에게 보여 주시기 바랍니다 사용하고있는 데이터베이스 및 데이터베이스 라이브러리를 지정하십시오

  3. 하세요 오류 처리기 또는 데이터베이스 로그에있는 오류 메시지를 잘라내거나 붙여 넣으십시오.

칙 :

OK - 내가 지금 당신과 함께 해요 :

1) 당신은 모질라 "저장"API를 사용하고 있습니다.

2) "createStatement()"다음에 "executeStatement()"를 호출해야합니다.

3) "handleError"기능도 있어야합니다.

문서와 샘플 코드

은 여기에 있습니다 :

http://developer.mozilla.org/En/Storage

+0

Components.utils.import ("resource : //gre/modules/Services.jsm"); \t Components.utils.import ("resource : //gre/modules/FileUtils.jsm"); \t \t let file = FileUtils.getFile ("ProfD", [ "filef.dbconn.executeSimpleSQL ('CREATE TABLE IF NOT EXISTS "quicklink"("id"INTEGER PRIMARY KEY NOT NULL, "name"VARCHAR NOT NULL); \t dbconn = Services.storage.openDatabase (파일); \t , "href"VARCHAR NOT NULL) '); \t var sqlinsert = dbconn.createStatement ('INSERT INTO '퀵 링크 "이름", "href") VALUES (: 이름, : href)'); \t sqlinsert. params.name = "뭔가"; \t sqlinsert.params.href = "URL"; – golddragon007

+0

dbconn.close();이 파이어 폭스에 -에 추가 ... 그리고 테이블 작업을 만들 – golddragon007

+0

을 첫 번째에서! 당신은 당신이 아니라 두 번째 하나에서 ->'executeSimpleSQL' 문을 실행하고 있습니다 – SQLMenace

0

어떤 데이터베이스 서버를 사용하고 있습니까? SQL Server를 사용하는 경우 프로파일 러를 사용하여 SQL Server에 대해 실제로 실행되는 명령을 확인하고 오류가 무엇인지 확인하십시오.

+0

파이어 폭스에 sqlite가있다 ... – golddragon007

관련 문제