从本机sqlite加载webstorage

时间:2011-07-19 10:01:11

标签: sqlite html5

我有一个原生的sqlite数据库,我想通过HTML5 webstorage加载/读取它。但我无法做到这一点。我已经通过将文件放在同一文件夹中并运行以下脚本来尝试它。

<html>
<head>
<title> Search </title>
<script>
var db = null;
function startapp(){
db = window.openDatabase("artistsWcities.sqlite", '1.0', 'Test', 19 * 1024 * 1024);
if (db) {
alert("database loaded");
}
}
</script>
</head>
<body onload="startapp()">
</body>
</html>

但它创建了新文件而不是阅读新文件。怎么做?

1 个答案:

答案 0 :(得分:0)

在W3C中specification openDatabase构造函数仅应用第一个参数,如浏览器数据库名称,而不是任何文件名。规格报价:

  

用户代理必须表现得好像数据库是以其他方式托管的   没有资源的完全空的环境。例如,尝试   读取或写入文件系统将失败。

您只能在浏览器扩展或组件中从本地资源获取sqlite文件,例如Firefox

您可以通过服务器请求获取文件artistsWcities.sqlite,例如,AJAX,并成功回调它到浏览器本地数据库。有关此question的更多信息。

但是,如果您的代码示例来自浏览器的扩展名,请仔细阅读文档。如果是Firefox扩展,您可以通过以下方式加载本地数据库:

Components.utils.import("resource://gre/modules/Services.jsm");
Components.utils.import("resource://gre/modules/FileUtils.jsm");

let file = FileUtils.getFile("ProfD", ["my_db_file_name.sqlite"]);
let mDBConn = Services.storage.openDatabase(file); // Will also create the file if it does not exist