使用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]
之后我想异步执行它......
答案 0 :(得分:1)
您在此处显示的代码没有任何问题 - 它可以正常工作。但是,如果该代码无效,createStatement
将验证SQL代码并抛出NS_ERROR_FAILURE
错误。在您的情况下,表persons
不存在,或者不存在所有字段name
,email
和city
。您应该查看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);
}