(перекрестная публикация в Mozilla: http://forums.mozillazine.org/viewtopic.php?f=7&t=2254955)
Я пытаюсь работать с Mozilla storageService .В следующем коде пользователя просят разрешить создание локальной базы данных ('database.sqlite'), и таблица создается.
<html>
<head>
<script type="text/javascript">
var con=null;
function executeStatement()
{
try
{
var stmt=con.createStatement("SELECT * FROM instances");
}
catch(e)
{
alert("Cannot execute statement :"+e);
}
}
function init()
{
try
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
catch (e)
{
alert("Permission to write to file was denied.");
return;
}
try
{
var file = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get("Home", Components.interfaces.nsIFile);
file.append("database.sqlite");
var storageService = Components.classes["@mozilla.org/storage/service;1"]
.getService(Components.interfaces.mozIStorageService);
con = storageService.openDatabase(file);
con.executeSimpleSQL(
"CREATE TABLE IF NOT EXISTS instances("+
"id INTEGER PRIMARY KEY AUTOINCREMENT"+
")"
);
}
catch(e)
{
alert(e);
}
}
window.addEventListener("load", init,true);
</script>
</head>
<body>
<button onClick="executeStatement();">Test</button>
</body>
</html>
Но когда я нажимаю на кнопку, чтобы вызвать метод executeStatement , я получаю следующее исключение:
Невозможно выполнить инструкцию: Ошибка: в доступе отказановызвать метод Безымянный класс.createStatement
почему?