提供具有多个参数的存储语句的最佳方法

时间:2012-06-09 21:25:38

标签: javascript sqlite firefox-addon

使用mutliple参数提供语句的“最佳”方法是什么?我想在SQLite数据库中插入一行。

改编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]

之后我想异步执行它......

1 个答案:

答案 0 :(得分:1)

您在此处显示的代码没有任何问题 - 它可以正常工作。但是,如果该代码无效,createStatement将验证SQL代码并抛出NS_ERROR_FAILURE错误。在您的情况下,表persons不存在,或者不存在所有字段nameemailcity。您应该查看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);
}