使用mozIStorageStatement对象的executeAsync在SELECT中执行零结果行为
zero results behaviour in SELECT using executeAsync of mozIStorageStatement object,
我使用mozIStorageStatement对象的executeAsync函数运行SQL SELECT语句,问题是,当语句没有得到结果时,回调的handleresult函数不运行。这是正常的行为还是我有问题?如果这是一个正常的行为,那么我如何写一个代码,将运行在我们有零结果的情况下?
这是正常行为。只有当结果可用时才调用handleResult
方法,而这种情况永远不会发生(当查询返回空集时)。您可以在handleCompletion
方法中处理这种情况,无论查询是否返回任何行,该方法始终执行。
这里有一个简单的例子来演示:
Components.utils.import("resource://gre/modules/Services.jsm");
Components.utils.import("resource://gre/modules/FileUtils.jsm");
var DBTest = {
// chrome window loaded
onload: function(e) {
var appContent = document.getElementById("appcontent");
appContent.addEventListener("DOMContentLoaded", function(e) {
try {
var file = FileUtils.getFile("ProfD", ["cookies.sqlite"]);
var dbConn = Services.storage.openDatabase(file);
var stmt = dbConn.createStatement(
"SELECT * FROM moz_cookies WHERE name='trash'");
stmt.executeAsync({
handleResult: function(aResultSet) {
alert("handleResult");
},
handleError: function(aError) {
alert("handleError: " + aError.message);
},
handleCompletion: function(aReason) {
alert("handleCompletion: " + aReason);
}
});
} catch(e) {
alert(e);
}
}, true);
}
}
window.addEventListener("load", DBTest.onload, false);
"aReason
"参数取值如下:
-
REASON_FINISHED = 0
语句正常执行完毕。 -
REASON_CANCELED = 1
语句因为被取消而停止执行。 -
REASON_ERROR = 2
语句停止执行错误发生。
进一步阅读:
- https://developer.mozilla.org/En/MozIStorageStatementCallback
相关文章:
- If语句只执行第一个条件并运行其他条件,但没有结果
- onchange选择get value并执行查询,然后在同一页面上显示结果
- 角度 2:使用一个 http 调用的结果来执行另一个调用
- 如何在三元运算的结果上执行多个函数
- jQuery $.get() JSON 函数正在执行,但不会产生任何结果
- JavaScript Regex在执行后会有不同的结果
- 使用Node中的Q promise库对值数组顺序调用/执行相同的函数;并返回带有结果的新数组/集合
- 根据两个异步函数调用的结果执行
- I'我在使用聚合核心ajax发送表单结果时遇到问题-go没有执行
- 皮赛德.JavaScript.以纯文本或 html 的形式执行 js 和 get 结果
- 在 Python 中使用 Selenium 执行 JavaScript 后存储结果
- 直接在元素上执行函数,而不是 document.getElementbyId 的结果
- 我怎样才能异步执行 JavaScript 代码片段并等待它们的结果
- 如何打开模态窗体,在控制器中执行操作,并在 Grails 中呈现结果
- 根据多个回调结果的结果执行最终回调
- 在表单中搜索字段,然后对所有选定的结果执行某些操作
- 执行带有 WHERE 子句的 Sql 在 Phonegap 中不返回任何结果
- 如何检查两个单独函数的执行结果
- 如果没有来自chrome.tabs.query的结果,请执行某些操作
- 基于java代码执行结果的确认对话框