2012-06-09 3 views
1

매개 변수가 여러 개인 문을 제공하는 "최적의"방법이란 무엇입니까? 한 줄을 SQLite 데이터베이스에 삽입하고 싶습니다.여러 매개 변수를 사용하여 저장소 문을 제공하는 가장 좋은 방법

var conn = Services.storage.openDatabase(dbfile); // Will also create the file if it does not exist 
let statement = conn.createStatement("INSERT INTO persons (name, email, city) VALUES (:name, :email, :city)"); 
statement.params.name = myName; 
statement.params.email = myEmail; 
statement.params.city = myCity; 

을하지만 분명히 난 문 자체를 만들 수 없습니다 :

https://developer.mozilla.org/en/Storage#Binding_Parameters을 적응 나는 다음과 같은 작업 것이라고 생각

이 구성 요소가 오류 코드가 반환 : 0X80004005 (NS_ERROR_FAILURE) mozIStorageConnection는합니다. createStatement]

그 후에 비동기식으로 실행하고 싶습니다.

답변

1

여기에 표시되는 코드에는 아무런 문제가 없습니다. 올바르게 작동합니다. 그러나 createStatement은 SQL 코드의 유효성을 검사하고 해당 코드가 유효하지 않으면 NS_ERROR_FAILURE 오류가 발생합니다. 귀하의 경우 테이블 persons이 존재하지 않거나 모든 필드 name, emailcity이 존재하지 않습니다. 오류 메시지를 확인하려면 lastErrorString attribute을 확인해야합니다.

let statement = null; 
try 
{ 
    statement = conn.createStatement("INSERT INTO persons (name, email, city) VALUES (:name, :email, :city)"); 
} 
catch (e) 
{ 
    Components.utils.reportError(conn.lastErrorString); 
} 
관련 문제