1

複数のパラメーターを含むステートメントを提供するための「最良の」方法は何ですか?SQLiteデータベースに1行挿入したい。

https://developer.mozilla.org/en/Storage#Binding_Parametersを適応させる私は次のことがうまくいくと思いました:

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;

しかし、明らかに私はステートメント自体を作成することさえできません:

コンポーネントが失敗コードを返しました:0x80004005(NS_ERROR_FAILURE)[mozIStorageConnection.createStatement]

その後、非同期で実行したいのですが...

4

1 に答える 1

1

ここに表示されているコードに問題はありません。正しく機能します。ただし、createStatementSQLコードを検証し、NS_ERROR_FAILUREそのコードが無効な場合はエラーをスローします。あなたの場合、テーブルが存在しないか、personsすべてのフィールドが存在しないかname、テーブルemailcity存在します。エラーメッセージを確認するには、lastErrorString属性を確認する必要があります。

let statement = null;
try
{
  statement = conn.createStatement("INSERT INTO persons (name, email, city) VALUES (:name, :email, :city)");
}
catch (e)
{
  Components.utils.reportError(conn.lastErrorString);
}
于 2012-06-09T22:11:01.017 に答える