我正在尝试在Mozilla平台中使用存储机制(在thundebird 3.0中)。
每次测试后使用以下代码擦除数据库中存在的表:
function tearDown()
{
let database = new Database();
let req1 = "SELECT name FROM sqlite_master WHERE type='table'";
let statement = database.connection.createStatement(req1);
let tables = [];
while(statement.executeStep()) {
tables.push(statement.row.name);
}
statement.reset();
for(table in tables) {
let req2 = "DROP TABLE " + tables[table];
database.connection.executeSimpleSQL(req2);
}
}
但是executeSimpleSQL
req2
(NS_ERROR_FILE_IS_LOCKED
)期间出现错误,似乎SQLite没有从第一个语句中释放锁定。我尝试了reset()
,finalize()
,但没有任何效果。如何正确释放第一个语句的锁?
答案 0 :(得分:2)
回答自己:我忘记在我的申请的先前代码中发布先前的陈述。
最后的故事:当你使用
时statement.executeStep()
检查:
或永远不会忘记发布它:
statement.reset();
答案 1 :(得分:1)
var statement = dbConn.createStatement("SELECT COUNT(name) AS nameOcurrences FROM Table1 WHERE name = '" + aName + "';");
var occurrences;
while(statement.executeStep()) {
occurrences = statement.row.nameOcurrences;
}